[R] count the cumulative for each subject

Bart Joosen Bartjoosen at hotmail.com
Mon Nov 24 19:29:46 CET 2008


Peter,

I actually took a look at the ave function, but couldn't manage to get it 
right.
But when I try your code, I get "Error in as.vector(x, mode) : invalid 
argument 'mode'".
Any ideas?

Bart

----- Original Message ----- 
From: "Peter Dalgaard" <P.Dalgaard at biostat.ku.dk>
To: "bartjoosen" <bartjoosen at hotmail.com>
Cc: <r-help at r-project.org>
Sent: Monday, November 24, 2008 3:42 PM
Subject: Re: [R] count the cumulative for each subject


bartjoosen wrote:
> How about:
>
> tapply(dat$x1,dat$subject,function(x) cumsum(x))
> which gives you a list for each subject.
>
> this can be converted to a vector:
> do.call("c",tapply(dat$x1,dat$subject,function(x) cumsum(x)))
>
> So if your data frame is ordered for your subjects:
>
> cbind(your.data.frame,do.call("c",tapply(dat$x1,dat$subject,function(x)
> cumsum(x))))
>
>

Sounds like a job for the eternally overlookked ave() function:

with(dat, ave(x1, subject, cumsum))


-- 
   O__  ---- Peter Dalgaard             Øster Farimagsgade 5, Entr.B
  c/ /'_ --- Dept. of Biostatistics     PO Box 2099, 1014 Cph. K
 (*) \(*) -- University of Copenhagen   Denmark      Ph:  (+45) 35327918
~~~~~~~~~~ - (p.dalgaard at biostat.ku.dk)              FAX: (+45) 35327907



More information about the R-help mailing list