aggregate and sum on some columns fromduplicate rows
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.