[R] subsetting by groups, with conditions

baptiste auguie baptiste.auguie at googlemail.com
Tue Dec 29 10:04:09 CET 2009


Hi,

I think you can also use plyr for this,

dft <- read.table(textConnection("P1id    Veg1    Veg2    AreaPoly2       P2ID

 1       p       p       1               1
 1       p       p       1.5             2
 2       p       p       2               3
 2       p       h       3.5             4"), header=T)

library(plyr)

ddply(dft, .(P1id), function(.df) {
  .ddf <- subset(.df, as.character(Veg1)==as.character(Veg2))
  .ddf[which.max(.ddf$AreaPoly2), ]
})

HTH,

baptiste

2009/12/29 Seth W Bigelow <sbigelow at fs.fed.us>:
> I have a data set similar to this:
>
> P1id    Veg1    Veg2    AreaPoly2       P2ID
> 1       p       p       1               1
> 1       p       p       1.5             2
> 2       p       p       2               3
> 2       p       h       3.5             4
>
> For each group of "Poly1id" records, I wish to output (subset) the record
> which has largest "AreaPoly2" value, but only if Veg1=Veg2. For this
> example, the desired dataset would be
>
> P1id    Veg1    Veg2    AreaPoly2       P2ID
> 1       p       p       1.5             2
> 2       p       p       2               3
>
> Can anyone point me in the right direction on this?
>
> Dr. Seth  W. Bigelow
> Biologist, USDA-FS Pacific Southwest Research Station
> 1731 Research Park Drive, Davis California
>        [[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