[R] aggregate and sum on some columns fromduplicate rows

arun smartpink111 at yahoo.com
Sat Mar 1 00:50:59 CET 2014


Hi,
You could use ?ddply
library(plyr)

cbind(ddply(dat,.(St.Sam,Sp),function(x) x[!duplicated(x$Var1),])[,-c(5:6)],ddply(dat,.(St.Sam,Sp),colwise(sum,.(NT,PT)))[,-c(1:2)])
   St.Sam  Sp Var1 Var2 NT PT
1  ST1.S1 Sp1   12   aa 23 37
2  ST1.S1 Sp2   32   bb 45 26
3  ST1.S1 Sp3   47   cc 89 35
4  ST1.S2 Sp1   25   dd 29 66
5  ST1.S2 Sp2   59   ee 89 35
6  ST2.S1 Sp1   15   aa 30 45
7  ST2.S1 Sp2   45   cc 55 23
8  ST2.S1 Sp3   27   aa 85 12
9  ST2.S1 Sp4   42   cc  8  3
10 ST3.S1 Sp1   25   aa 26 69
11 ST3.S1 Sp2   36   bb 65 48
A.K.




On Friday, February 28, 2014 6:47 PM, ltdm <Luis.Tito-de-Morais at ird.fr> wrote:
Hi again,

Sorry for disturbing. After posting I suddenly found a solution.
As it may help someone else here it goes.

df
du1 <- duplicated(df[,c("St.Sam","Species")],fromLast = F)
du2 <- duplicated(df[,c("St.Sam","Species")],fromLast = T)
X <- df[du1|du2,]
aggRows <- aggregate(cbind(NT,PT) ~St.Sam+Species+Var1+Var2, X,sum)
dfNew <- rbind(df[!(du1|du2),], aggRows)

Just need to "polish" dfNew and its OK. But maybe there is a more elegant
solution.

Cheers,

Tito





--
View this message in context: http://r.789695.n4.nabble.com/aggregate-and-sum-on-some-columns-fromduplicate-rows-tp4686040p4686043.html

Sent from the R help mailing list archive at Nabble.com.

______________________________________________
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