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. > [[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.