[R] How to modify a column of a matrix

Bert Gunter gunter.berton at gene.com
Mon Mar 12 19:34:53 CET 2007


?cut ## if you have several bins, where ifelse becomes messy


Bert Gunter
Genentech Nonclinical Statistics
South San Francisco, CA 94404
650-467-7374




-----Original Message-----
From: r-help-bounces at stat.math.ethz.ch
[mailto:r-help-bounces at stat.math.ethz.ch] On Behalf Of Marc Schwartz
Sent: Monday, March 12, 2007 11:25 AM
To: Sergio Della Franca
Cc: r-help at stat.math.ethz.ch
Subject: Re: [R] How to modify a column of a matrix

On Mon, 2007-03-12 at 18:55 +0100, Sergio Della Franca wrote:
> Dear R-helpers,
> 
> I'm trying to create a string-code to modify the contents of a column of a
> matrix.
> 
> For example, I have this dataset:
> 
>   YEAR   PRODUCTS
>   1992      3253
>   1993      4144
>   1994      3246
>   1996      4144
>   1997      4087
>   1998      3836
>   1999      4379
>   2000      4072
>   2001      4202
>   2002      4554
>   2003      4456
>   2004      4738
>   2005      4144
> 
> I want to convert/update the values of the column "PRODUCTS" under some
> condition (i.e. when the values of PRODUCTS is greather than 4000 replace
> the values of PRODUCTS whit 0 else replace with 1).
> 
> My question is the following:
> there is a function or a metodology that allow to makes this operation?
> 
> 
> Thank you in advance,
> Sergio

If the data is above is matrix (MAT) and not a data frame:

# See ?cbind and ?ifelse

MAT <- cbind(MAT,  NewCol = ifelse(MAT[, "PRODUCTS"] > 4000, 0, 1))

> MAT
   YEAR PRODUCTS NewCol
1  1992     3253      1
2  1993     4144      0
3  1994     3246      1
4  1996     4144      0
5  1997     4087      0
6  1998     3836      1
7  1999     4379      0
8  2000     4072      0
9  2001     4202      0
10 2002     4554      0
11 2003     4456      0
12 2004     4738      0
13 2005     4144      0


If it is a data frame:

DF$NewCol <- ifelse(DF$PRODUCTS > 4000, 0, 1)

> DF
   YEAR PRODUCTS NewCol
1  1992     3253      1
2  1993     4144      0
3  1994     3246      1
4  1996     4144      0
5  1997     4087      0
6  1998     3836      1
7  1999     4379      0
8  2000     4072      0
9  2001     4202      0
10 2002     4554      0
11 2003     4456      0
12 2004     4738      0
13 2005     4144      0


HTH,

Marc Schwartz

______________________________________________
R-help at stat.math.ethz.ch mailing list
https://stat.ethz.ch/mailman/listinfo/r-help
PLEASE do read the posting guide http://www.R-project.org/posting-guide.html
and provide commented, minimal, self-contained, reproducible code.



More information about the R-help mailing list