[R] understanding output of tapply/by cumsum

Gerrit Draisma gdraisma at xs4all.nl
Tue Dec 7 12:39:27 CET 2010


Dear R-users,

I have a dataset with categories and numbers.
I would like to compute and add cumulative numbers
to the dataset.
I do not understand the structure of by(...) or
tapply(...) output enough to handle it.

Here a small example
--------------
d<-expand.grid(a=1:5,b=1:3,c=1:2)
d$n = 10 * d$a + d$b +0.1* d$c
Sn<-by(d$n,list(d$a,d$c),cumsum)
str(Sn)
---------
List of 10
  $ : num [1:3] 11.1 23.2 36.3
  $ : num [1:3] 21.1 43.2 66.3
  $ : num [1:3] 31.1 63.2 96.3
  $ : num [1:3]  41.1  83.2 126.3
  $ : num [1:3]  51.1 103.2 156.3
  $ : num [1:3] 11.2 23.4 36.6
  $ : num [1:3] 21.2 43.4 66.6
  $ : num [1:3] 31.2 63.4 96.6
  $ : num [1:3]  41.2  83.4 126.6
  $ : num [1:3]  51.2 103.4 156.6
  - attr(*, "dim")= int [1:2] 5 2
  - attr(*, "dimnames")=List of 2
   ..$ : chr [1:5] "1" "2" "3" "4" ...
   ..$ : chr [1:2] "1" "2"
  - attr(*, "call")= language by.default(data = d$n, INDICES = list(d$a, 
d$c), FUN = cumsum)
  - attr(*, "class")= chr "by
---------
# these give (a) lists of one numerical vector(a)
Sn[5,2]
Sn[cbind(d$a,d$c)]
# how to access the individual cumsum values?
# and assign them to d$Sn?
--------------

Thanks,
Gerrit.

---
Gerrit Draisma
Department of Public Health
Erasmus MC, University Medical Center Rotterdam
Room AE-235
P.O. Box 2040 3000 CA  Rotterdam The Netherlands
Phone: +31 10 7043787 Fax: +31 10 7038474
http://mgzlx4.erasmusmc.nl/pwp/?gdraisma



More information about the R-help mailing list