Мы можем использовать rowCumsums
в столбцах rev
, используя индекс с seq
(:
), обратным для индекса столбца, а затем rev
снова индексировать
library(matrixStats)
tbl <- table(df$month, df$length)
tbl[] <- rowCumsums(tbl[, ncol(tbl):1])[, ncol(tbl):1]
tbl
#
# 1 2 3 4 5 6
# jan 24 19 14 10 5 2
# feb 33 28 21 19 12 3
# mar 25 20 17 15 13 4
# apr 35 29 22 18 14 11
# may 25 20 15 12 7 2
# jun 26 22 18 16 9 5
# jul 22 18 15 10 5 4
# aug 25 21 21 16 13 7
# sep 23 19 14 10 6 3
# oct 22 18 16 15 9 4
# nov 19 14 12 9 4 2
# dec 21 17 15 8 5 4
Или в base R
это будет cumsum
с apply
tbl[] <- t(apply(tbl[, ncol(tbl):1], 1, cumsum))[, ncol(tbl):1]
data
tbl <- structure(c(5L, 5L, 5L, 6L, 5L, 4L, 4L, 4L, 4L, 4L, 5L, 4L, 5L,
7L, 3L, 7L, 5L, 4L, 3L, 0L, 5L, 2L, 2L, 2L, 4L, 2L, 2L, 4L, 3L,
2L, 5L, 5L, 4L, 1L, 3L, 7L, 5L, 7L, 2L, 4L, 5L, 7L, 5L, 3L, 4L,
6L, 5L, 3L, 3L, 9L, 9L, 3L, 5L, 4L, 1L, 6L, 3L, 5L, 2L, 1L, 2L,
3L, 4L, 11L, 2L, 5L, 4L, 7L, 3L, 4L, 2L, 4L), .Dim = c(12L, 6L
), .Dimnames = structure(list(c("jan", "feb", "mar", "apr", "may",
"jun", "jul", "aug", "sep", "oct", "nov", "dec"), c("1", "2",
"3", "4", "5", "6")), .Names = c("", "")), class = "table")