Thanks Joris, you are absolutely right. Apologies to all for that. May be this time I can get it right :-)
transform(Data, CUMSUM = do.call(c, with(Data, tapply(value, rev(variable), cumsum)))) Regards, Jorge On Thu, Jun 3, 2010 at 8:04 PM, Joris Meys <> wrote: > 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 > <> 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 > [[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.