[R] Sum every n (4) observations by group
Leonard Mada
|eo@m@d@ @end|ng |rom @yon|c@eu
Mon Dec 20 12:56:13 CET 2021
Dear Miluji,
something like this could help:
sapply(tapply(x$Value, x$ID, cumsum),
function(x) x[seq(4, length(x), by=4)] - c(0, x[head(seq(4,
length(x), by=4), -1)]))
1.) Step 1:
Compute the cumsum for each ID:
tapply(x$Value, x$ID, cumsum)
2.) Step 2:
- iterate over the resulting list and select each 4th value;
- you can either run a diff on this or subtract directly the (n-4) sum;
Note:
- you may wish to check if the last value is a multiple of 4;
- alternative: you can do a LOCF (last observation carried forward);
Hope this code example helps.
Sincerely,
Leonard
More information about the R-help
mailing list