[R] Selecting rows according to a column

Adaikalavan Ramasamy a.ramasamy at imperial.ac.uk
Wed Oct 28 17:25:13 CET 2009


Not very elegant but try:

  z <- data.frame(a = 1:5, b=10*(1:5), c = c("a", "a", "b", "b", "b") )
  z[ cbind( 1:nrow(z), match( as.character(z$c) , colnames(z) ) ) ]

If you have very few columns, you can use ifelse() too.

Regards, Adai



Gurpal Kalsi wrote:
> Hi,
> 
> With a data such as:
>> z = data.frame(a = 1:5, b=10*a, c = c("a", "a", "b", "b", "b") )
> * a  b  c*
>  *1* 10 *a*
>  *2* 20 *a*
>  3 *30* *b*
>  4 *40* *b*
>  5 *50* *b*
> 
> Can anyone suggest a way to select [1, 2, 30, 40, 50],
> ie. using column "c" to specify which column is selected for each row.
> 
> Many thanks
> 
> G
> 
> 	[[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.




More information about the R-help mailing list