On Oct 12, 2010, at 1:40 PM, Bond, Stephen wrote:

Hello everybody,

Data is
myd <- data.frame(id1=rep(c("a","b","c"),each=3),id2=rep(1:3,3),val=rnorm(9))

I want to get a cumulative sum over each of id1. trying aggregate does not work

myd$pcum <- aggregate(myd[,c("val")],list(orig=myd$id1),cumsum)

Use ave instead of aggregate:

> ave(myd$val, list(myd$id1), FUN=cumsum)
[1] 0.362123399 -1.538797831 -2.061733393 -2.038050242 -0.344382401 -1.365281650
[7]  0.391181119 -0.258668053 -0.007736216

myd$pcum <- ave(myd$val, list(myd$id1), FUN=cumsum)

Please suggest a solution. In real the dataframe is huge so looping with for and subsetting is not a great idea (still doable, though).
Thank you


Stephen B
--

David Winsemius, MD
West Hartford, CT

______________________________________________
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