[R] subsetting by groups, with conditions

David Winsemius dwinsemius at comcast.net
Tue Dec 29 02:31:25 CET 2009


On Dec 28, 2009, at 7:03 PM, Seth W Bigelow wrote:

> 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 you be more expansive (or perhaps more accurate?) about the  
conditions you want satisfied? Looking at the that dataset, I only see  
one row that has the largest value for AreaPoly2 within the three  
records where Veg1==Veg2.

Otherwise I would think the answer might be along these lines:
 > 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)
 > dft$Veg1 <- factor(dft$Veg1, levels=levels(dft$Veg2))

 > s.dft <- subset(dft, Veg1==Veg2)

 > s.dft[which.max(s.dft$AreaPoly2),]
   P1id Veg1 Veg2 AreaPoly2 P2ID
3    2    p    p         2    3

-- 
David

>
> 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