Re: [R] cumsum function with data frame

From: Jorge Ivan Velez <jorgeivanvelez_at_gmail.com>
Date: Thu, 03 Jun 2010 15:35:11 -0400

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 <mazatlanmexico_at_yahoo.com>
> > To: Joris Meys <jorismeys_at_gmail.com>; "n.vialma_at_libero.it" <
> n.vialma_at_libero.it>
> > Cc: r-help_at_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:jorismeys_at_gmail.com"
> > href="mailto:jorismeys_at_gmail.com">jorismeys_at_gmail.com>
> > To: "> ymailto="mailto:n.vialma_at_libero.it"
> > href="mailto:n.vialma_at_libero.it">n.vialma_at_libero.it" <> ymailto="mailto:
> n.vialma_at_libero.it"
> > href="mailto:n.vialma_at_libero.it">n.vialma_at_libero.it>
> > Cc: > ymailto="mailto:r-help_at_r-project.org"
> > href="mailto:r-help_at_r-project.org">r-help_at_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.vialma_at_libero.it">
> n.vialma_at_libero.it"
> >
> > href="mailto:> href="mailto:n.vialma_at_libero.it">n.vialma_at_libero.it">>
> ymailto="mailto:n.vialma_at_libero.it"
> > href="mailto:n.vialma_at_libero.it">n.vialma_at_libero.it <>
> > ymailto="mailto:> href="mailto:n.vialma_at_libero.it">n.vialma_at_libero.it"
> >
> > href="mailto:> href="mailto:n.vialma_at_libero.it">n.vialma_at_libero.it">>
> ymailto="mailto:n.vialma_at_libero.it"
> > href="mailto:n.vialma_at_libero.it">n.vialma_at_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_at_r-project.org"
> > href="mailto:R-help_at_r-project.org">R-help_at_r-project.org"
> >
> > href="mailto:> href="mailto:R-help_at_r-project.org">R-help_at_r-project.org">>
> ymailto="mailto:R-help_at_r-project.org"
> > href="mailto:R-help_at_r-project.org">R-help_at_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.Meys_at_Ugent.be">Joris.Meys_at_Ugent.be">>
> ymailto="mailto:Joris.Meys_at_Ugent.be"
> > href="mailto:Joris.Meys_at_Ugent.be">Joris.Meys_at_Ugent.be
> -------------------------------
> Disclaimer
> >
> > : http://helpdesk.ugent.be/e-maildisclaimer.php
>
>
> >
> > [[alternative HTML version
> >
> > deleted]]
>
> ______________________________________________
> >
> > ymailto="mailto:> href="mailto:R-help_at_r-project.org">
> R-help_at_r-project.org"
> >
> > href="mailto:> href="mailto:R-help_at_r-project.org">R-help_at_r-project.org">>
> ymailto="mailto:R-help_at_r-project.org"
> > href="mailto:R-help_at_r-project.org">R-help_at_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_at_r-project.org"
> > href="mailto:R-help_at_r-project.org">R-help_at_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_at_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_at_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. Received on Thu 03 Jun 2010 - 19:38:00 GMT

Archive maintained by Robert King, hosted by the discipline of statistics at the University of Newcastle, Australia.
Archive generated by hypermail 2.2.0, at Fri 04 Jun 2010 - 00:20:30 GMT.

Mailing list information is available at https://stat.ethz.ch/mailman/listinfo/r-help. Please read the posting guide before posting to the list.

list of date sections of archive