Hi, R users, I'm wondering if I can identify an element in a column by an element in another column. For example: x<-1:10 y<-11:20 z<-cbind(x,y) z x y [1,] 1 11 [2,] 2 12 [3,] 3 13 [4,] 4 14 [5,] 5 15 [6,] 6 16 [7,] 7 17 [8,] 8 18 [9,] 9 19 [10,] 10 20 What I want to do is: when x=5, y=y-1 Anyone can tell me how to do this? Thanks. Gary [[alternative HTML version deleted]]
Is this what you mean? z[which(z[,"x"] == 5) - 1, "y"] ?which is probably what you're looking for... Hongwei Dong wrote:> Hi, R users, > > I'm wondering if I can identify an element in a column by an element in > another column. For example: > > x<-1:10 > y<-11:20 > z<-cbind(x,y) > z > x y > [1,] 1 11 > [2,] 2 12 > [3,] 3 13 > [4,] 4 14 > [5,] 5 15 > [6,] 6 16 > [7,] 7 17 > [8,] 8 18 > [9,] 9 19 > [10,] 10 20 > > What I want to do is: when x=5, y=y-1 > > Anyone can tell me how to do this? Thanks. > > > Gary > > [[alternative HTML version deleted]] > > ______________________________________________ > R-help at r-project.org 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.
try this: x <- 1:10 y <- 11:20 z <- cbind(x, y) ind <- x == 5 z[ind, "y"] <- z[ind, "y"] - 1 z I hope it helps. Best, Dimitris On 2/22/2011 6:18 PM, Hongwei Dong wrote:> Hi, R users, > > I'm wondering if I can identify an element in a column by an element in > another column. For example: > > x<-1:10 > y<-11:20 > z<-cbind(x,y) > z > x y > [1,] 1 11 > [2,] 2 12 > [3,] 3 13 > [4,] 4 14 > [5,] 5 15 > [6,] 6 16 > [7,] 7 17 > [8,] 8 18 > [9,] 9 19 > [10,] 10 20 > > What I want to do is: when x=5, y=y-1 > > Anyone can tell me how to do this? Thanks. > > > Gary > > [[alternative HTML version deleted]] > > ______________________________________________ > R-help at r-project.org 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. >-- Dimitris Rizopoulos Assistant Professor Department of Biostatistics Erasmus University Medical Center Address: PO Box 2040, 3000 CA Rotterdam, the Netherlands Tel: +31/(0)10/7043478 Fax: +31/(0)10/7043014 Web: http://www.erasmusmc.nl/biostatistiek/
Hi Gary, Another possibility besides Erik's (although I suspect his is what you are really after): ## easier way to data z <- cbind(x = 1:10, y = 11:20) z[z[,"x"] == 5, "y"] - 1 ## To see what is "going on", break it into pieces ## logical; does column 'x' of 'z' equal 5? z[, "x"] == 5 ## all values in column 'y' z[ , "y"] ## subtract 1 from the values in column 'y' z[ , "y"] - 1 ## For documentation ?"[" ?Logic Cheers, Josh On Tue, Feb 22, 2011 at 9:18 AM, Hongwei Dong <pdxdong at gmail.com> wrote:> Hi, R users, > > I'm wondering if I can identify an element in a column by an element in > another column. For example: > > x<-1:10 > y<-11:20 > z<-cbind(x,y) > z > ? ? x ?y > ?[1,] ?1 11 > ?[2,] ?2 12 > ?[3,] ?3 13 > ?[4,] ?4 14 > ?[5,] ?5 15 > ?[6,] ?6 16 > ?[7,] ?7 17 > ?[8,] ?8 18 > ?[9,] ?9 19 > [10,] 10 20 > > What I want to do is: when x=5, y=y-1 > > Anyone can tell me how to do this? Thanks. > > > Gary > > ? ? ? ?[[alternative HTML version deleted]] > > ______________________________________________ > R-help at r-project.org 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. >-- Joshua Wiley Ph.D. Student, Health Psychology University of California, Los Angeles http://www.joshuawiley.com/
Hi Gary, Try transform(z, y = ifelse(x == 5, y-1, y)) HTH, Jorge On Tue, Feb 22, 2011 at 12:18 PM, Hongwei Dong <> wrote:> Hi, R users, > > I'm wondering if I can identify an element in a column by an element in > another column. For example: > > x<-1:10 > y<-11:20 > z<-cbind(x,y) > z > x y > [1,] 1 11 > [2,] 2 12 > [3,] 3 13 > [4,] 4 14 > [5,] 5 15 > [6,] 6 16 > [7,] 7 17 > [8,] 8 18 > [9,] 9 19 > [10,] 10 20 > > What I want to do is: when x=5, y=y-1 > > Anyone can tell me how to do this? Thanks. > > > Gary > > [[alternative HTML version deleted]] > > ______________________________________________ > R-help@r-project.org 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. >[[alternative HTML version deleted]]