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, 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]]
>
> ______________________________________________
> 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.

Reply via email to