HI, If you wanted to use colSums, may be this works:
ddply(jd1,.(fid,year),function(x) colSums(x[,-c(1,2)],na.rm=TRUE)) # fid year rice wheat maize #1 1 1995 5 3 2 #2 1 1996 4 2 6 #3 2 1995 3 8 4 #4 2 1996 7 6 7 A.K. ----- Original Message ----- From: arun <smartpink...@yahoo.com> To: Janesh Devkota <janesh.devk...@gmail.com> Cc: R help <r-help@r-project.org>; shyam basnet <shyamabc2...@yahoo.com>; Rui Barradas <ruipbarra...@sapo.pt> Sent: Friday, April 19, 2013 6:25 PM Subject: Re: [R] how to subtotal by rows Hi Janesh, There is a difference in output between these : ddply(jd1,.(fid,year),colSums,na.rm=T) #especially the first two columns # fid year rice wheat maize #1 3 5985 5 3 2 #2 3 5988 4 2 6 #3 6 5985 3 8 4 #4 6 5988 7 6 7 ddply(jd1,.(fid,year),colwise(sum,na.rm=T)) # fid year rice wheat maize #1 1 1995 5 3 2 #2 1 1996 4 2 6 #3 2 1995 3 8 4 #4 2 1996 7 6 7 aggregate(jd1[,3:5],by=list(jd1$year,jd1$fid),FUN=sum,na.rm=TRUE) # Group.1 Group.2 rice wheat maize #1 1995 1 5 3 2 #2 1996 1 4 2 6 #3 1995 2 3 8 4 #4 1996 2 7 6 7 A.K. ________________________________ From: Janesh Devkota <janesh.devk...@gmail.com> To: shyam basnet <shyamabc2...@yahoo.com> Cc: "r-help@R-project.org" <r-help@r-project.org> Sent: Friday, April 19, 2013 3:32 PM Subject: Re: [R] how to subtotal by rows You can also use this short command. library(plyr) ddply(jd1,.(fid,year),colSums,na.rm=T) Janesh On Fri, Apr 19, 2013 at 2:30 PM, Janesh Devkota <janesh.devk...@gmail.com>wrote: > Hello Shyam, > > This is one way to do it > > jd1 <- read.table(text=" > fid year rice wheat maize > 1 1995 5 NA NA > 1 1995 NA 3 NA > 1 1995 NA NA 2 > 1 1996 4 NA NA > 1 1996 NA 2 NA > 1 1996 NA NA 6 > 2 1995 3 NA NA > 2 1995 NA 8 NA > 2 1995 NA NA 4 > 2 1996 7 NA NA > 2 1996 NA 6 NA > 2 1996 NA NA 7 > ", sep="", header=T) > jd1 > > library(plyr) > > ddply(jd1,.(fid,year),summarise, > rice=sum(rice,na.rm=T),wheat=sum(wheat,na.rm=T),maize=sum(maize,na.rm=T)) > > Good luck > > Janesh > > > On Fri, Apr 19, 2013 at 10:59 AM, shyam basnet <shyamabc2...@yahoo.com>wrote: > >> >> >> Dear R-users, >> >> I have a dataset as like below, and I want to subtotal the values of >> rice,wheat and maize by year for each fid. >> >> fid year rice wheat maize >> ------------------------------------------------ >> 1 1995 5 NA NA >> 1 1995 NA 3 NA >> 1 1995 NA NA 2 >> 1 1996 4 NA NA >> 1 1996 NA 2 NA >> 1 1996 NA NA 6 >> 2 1995 3 NA NA >> 2 1995 NA 8 NA >> 2 1995 NA NA 4 >> 2 1996 7 NA NA >> 2 1996 NA 6 NA >> 2 1996 NA NA >> 7----------------------------------------------- >> >> And, my output should look like below: >> >> fid year rice wheat maize >> 1 1995 5 3 2 >> 1 1996 4 2 6 >> >> 2 1995 3 8 4 >> 2 1996 7 6 7I am looking for some ideas or >> r-codes on resolving my problem. >> I appreciate your kind help, >> >> >> Thanks a lot, >> >> Sincerely yours, >> Shyam >> Nepal >> [[alternative HTML version deleted]] >> >> >> ______________________________________________ >> 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. >> >> > [[alternative HTML version deleted]] ______________________________________________ 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.