[R] cumsum function with data frame

Joris Meys jorismeys at gmail.com
Fri Jun 4 02:04:28 CEST 2010


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
<jorgeivanvelez at 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 <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.
>
>



-- 
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.Meys at Ugent.be
-------------------------------
Disclaimer : http://helpdesk.ugent.be/e-maildisclaimer.php



More information about the R-help mailing list