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-mor...@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@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. ______________________________________________ R-help@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.