But then you don't apply cumsum within each factor level. Hence the ddply. Cheers Joris
On Thu, Jun 3, 2010 at 9:35 PM, Jorge Ivan Velez <jorgeivanve...@gmail.com> wrote: > Or better yet, you can use transform only (in base): > transform(Data, CUMSUM = cumsum(value)) > HTH, > Jorge > > On Thu, Jun 3, 2010 at 3:30 PM, Felipe Carrillo <> wrote: >> >> Better yet, is shorter using tranform instead of summarise: >> Data <- read.table(textConnection("variable Year value >> EC01 2005 5 >> EC01 2006 10 >> AAO1 2005 2 >> AAO1 2006 4"),header=T) >> >> ddply(Data,.(variable),transform,CUMSUM=cumsum(value)) >> >> >> >> >> ----- Original Message ---- >> > From: Felipe Carrillo <mazatlanmex...@yahoo.com> >> > To: Joris Meys <jorism...@gmail.com>; "n.via...@libero.it" >> > <n.via...@libero.it> >> > Cc: r-help@r-project.org >> > Sent: Thu, June 3, 2010 11:28:58 AM >> > Subject: Re: [R] cumsum function with data frame >> > >> > You can also use ddply from the plyr package: >> >> library(plyr) >> Data <- >> > read.table(textConnection("variable Year value >> EC01 >> > 2005 5 >> EC01 2006 10 >> AAO1 2005 >> > 2 >> AAO1 2006 >> > 4"),header=T) >> Data >> >> ddply(Data,.(variable),summarise,Year=Year,value=value,CUMSUM=cumsum(value)) >> >> Felipe >> > D. Carrillo >> Supervisory Fishery Biologist >> Department of the Interior >> US >> > Fish & Wildlife Service >> California, USA >> >> >> >> ----- Original >> > Message ---- >> > From: Joris Meys <> ymailto="mailto:jorism...@gmail.com" >> > href="mailto:jorism...@gmail.com">jorism...@gmail.com> >> > To: "> ymailto="mailto:n.via...@libero.it" >> > href="mailto:n.via...@libero.it">n.via...@libero.it" <> >> > ymailto="mailto:n.via...@libero.it" >> > href="mailto:n.via...@libero.it">n.via...@libero.it> >> > Cc: > ymailto="mailto:r-help@r-project.org" >> > href="mailto:r-help@r-project.org">r-help@r-project.org >> > Sent: Thu, >> > June 3, 2010 9:26:17 AM >> > Subject: Re: [R] cumsum function with data >> > frame >> > >> > See ?split and ?unsplit. >> >> Data <- >> > >> > read.table(textConnection("variable Year >> > value >> EC01 >> > 2005 >> > 5 >> EC01 2006 >> > 10 >> AAO1 >> > >> > 2005 2 >> AAO1 >> > 2006 >> > 4"),header=T) >> >> Datalist >> > >> > <-split(Data,Data$variable) >> resultlist <- >> > >> > lapply(Datalist,function(x){ >> x$cumul <- >> > cumsum(x$value) >> >> > return(x) >> }) >> result <- >> > >> > unsplit(resultlist,Data$variable) >> result >> >> variable Year value >> > >> > cumul >> 1 EC01 2005 5 5 >> 2 >> > EC01 2006 10 >> > 15 >> 3 AAO1 >> > 2005 2 2 >> 4 AAO1 2006 >> > 4 >> > 6 >> >> On a side note: I've used this construction now for a >> > number >> > of problems. >> Some could be better solved using more specific functions >> > >> > (e.g. ave() for >> adding a column with means for example). I'm not >> > sure however >> > this is the >> most optimal approach to applying a >> > function to subsets of a >> > dataframe and >> adding the result of that >> > function as an extra variable. >> > Anybody care to >> elaborate on how the >> > R masters had it in >> > mind? >> >> Cheers >> Joris >> >> On Thu, Jun 3, >> > 2010 at 5:58 PM, > ymailto="mailto:> >> > href="mailto:n.via...@libero.it">n.via...@libero.it" >> > >> > href="mailto:> href="mailto:n.via...@libero.it">n.via...@libero.it">> >> > ymailto="mailto:n.via...@libero.it" >> > href="mailto:n.via...@libero.it">n.via...@libero.it <> >> > ymailto="mailto:> href="mailto:n.via...@libero.it">n.via...@libero.it" >> > >> > href="mailto:> href="mailto:n.via...@libero.it">n.via...@libero.it">> >> > ymailto="mailto:n.via...@libero.it" >> > href="mailto:n.via...@libero.it">n.via...@libero.it>wrote: >> >> > >> > >> > >> > Dear list, >> > I have a problem with the cumsum function. >> > I >> > have a >> > data frame like the following one >> > variable >> > >> > Year value >> > EC01 >> > 2005 >> > 5 >> > >> > EC01 >> > 2006 10 >> > >> > >> > >> > AAO1 2005 >> > 2 >> > >> > AAO1 >> > 2006 >> > 4 >> > what I would like to obtain is >> > >> > >> > variable Year value >> > cumsum >> > >> > >> > EC01 >> > >> > 2005 5 >> > 5 >> > >> > >> > EC01 >> > >> > 2006 10 >> > 15 >> > >> > >> > >> > AAO1 >> > 2005 2 >> > >> > 2 >> > >> > >> > AAO1 >> > 2006 4 >> > >> > 6 >> > >> > >> > if I use the by function or the aggregate >> > >> > function the result is a list or >> > something else, what I want is >> > a data >> > frame as I showed above... >> > anyone knows how to get >> > it??? >> > THANKS >> > A >> > LOT >> > >> > >> > >> > >> > >> > >> > >> > [[alternative HTML version deleted]] >> > >> > >> > >> > ______________________________________________ >> > > ymailto="mailto:> ymailto="mailto:R-help@r-project.org" >> > href="mailto:R-help@r-project.org">R-help@r-project.org" >> > >> > href="mailto:> >> > href="mailto:R-help@r-project.org">R-help@r-project.org">> >> > ymailto="mailto:R-help@r-project.org" >> > href="mailto:R-help@r-project.org">R-help@r-project.org mailing list >> > >> > >> > > >> target=_blank >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. >> > >> >> >> >> -- >> Joris Meys >> Statistical >> > >> > Consultant >> >> Ghent University >> Faculty of Bioscience >> > >> > Engineering >> Department of Applied mathematics, biometrics and process >> > >> > control >> >> Coupure Links 653 >> B-9000 Gent >> >> tel : +32 9 264 >> > 59 >> > 87 >> > href="mailto:> href="mailto:joris.m...@ugent.be">joris.m...@ugent.be">> >> > ymailto="mailto:joris.m...@ugent.be" >> > href="mailto:joris.m...@ugent.be">joris.m...@ugent.be >> ------------------------------- >> Disclaimer >> > >> > : http://helpdesk.ugent.be/e-maildisclaimer.php >> >> >> > >> > [[alternative HTML version >> > >> > deleted]] >> >> ______________________________________________ >> > >> > ymailto="mailto:> >> > href="mailto:R-help@r-project.org">R-help@r-project.org" >> > >> > href="mailto:> >> > href="mailto:R-help@r-project.org">R-help@r-project.org">> >> > ymailto="mailto:R-help@r-project.org" >> > href="mailto:R-help@r-project.org">R-help@r-project.org mailing list >> > >> > href="> >https://stat.ethz.ch/mailman/listinfo/r-help" target=_blank >> > >> href="https://stat.ethz.ch/mailman/listinfo/r-help" target=_blank >> > >https://stat.ethz.ch/mailman/listinfo/r-help >> PLEASE do read the posting >> > >> > guide > >> target=_blank >http://www.R-project.org/posting-guide.html >> and provide >> > commented, >> > minimal, self-contained, reproducible >> > code. >> >> >> >> >> ______________________________________________ >> > ymailto="mailto:R-help@r-project.org" >> > href="mailto:R-help@r-project.org">R-help@r-project.org mailing list >> > href="https://stat.ethz.ch/mailman/listinfo/r-help" target=_blank >> > >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. > > -- Joris Meys Statistical Consultant Ghent University Faculty of Bioscience Engineering Department of Applied mathematics, biometrics and process control Coupure Links 653 B-9000 Gent tel : +32 9 264 59 87 joris.m...@ugent.be ------------------------------- Disclaimer : http://helpdesk.ugent.be/e-maildisclaimer.php ______________________________________________ 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.