行累计和

标签 r data.table cumsum

我有一个 data.table dt如下。

df <- data.frame(t1 = rep(0,5), t3 = c(12, 5, 8,9, 5), t7= c(25, 48, 7, 9, 14))
dt <- setDT(df)
dt
   t1 t3 t7
1:  0 12 25
2:  0  5 48
3:  0  8  7
4:  0  9  9
5:  0  5 14

我想获得各列的累计总和。我只得到它的行。如何在 data.table 中执行此操作.
dt[, 1:3 := cumsum(dt)]
dt
   t1 t3  t7
1:  0 12  25
2:  0 17  73
3:  0 25  80
4:  0 34  89
5:  0 39 103

所需的输出如下:
dt
   t1 t3 t7
1:  0 12 37
2:  0  5 53
3:  0  8 15
4:  0  9 18
5:  0  5 19

最佳答案

另一个选项使用 Reduceaccumulate=TRUE :

dt[, names(dt) := Reduce(`+`, dt, accumulate = TRUE)]

dt
#   t1 t3 t7
#1:  0 12 37
#2:  0  5 53
#3:  0  8 15
#4:  0  9 18
#5:  0  5 19

关于行累计和,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46978826/

相关文章:

r - 用 R 中的连续索引向量化向量和矩阵的叉积

R 在data.table(或ddply)中动态构建 "list"

r - 数据表 DT[i, j, by] 不使用 i 中的条件选择组,试图过滤组内唯一值的数量

python - "np.cumsum() like"- 根据实际值迭代

python - 如何在某些情况下重命名 Pandas 数据框中的列值

r - 带重置的条件累加

json - 无法从 URL NBA 统计数据获取数据

r - 平滑ggplot2 map

javascript - 在 Shiny 的 textOutput() 更改后触发 react

r - 如何加快 data.table 中的逐行操作