有效地对大列中所有先前行进行求和

时间:2017-04-15 16:03:10

标签: r

我有一个大型数据集(> 100,000行),并希望创建一个新列,该列可以汇总另一列的所有先前值。

对于具有100,000行和2列的模拟数据集test.data,我创建了新的向量,该向量将第2列的内容与:

相加
sapply(1:100000, function(x) sum(test.data[1:x[1],2]))

我稍后将此向量附加到test.table cbind()但这太慢了。有没有更快的方法来实现这一点,或者能够引用sapply正在进行的矢量,所以我可以更新累积总和而不是再次执行整个计算?

1 个答案:

答案 0 :(得分:2)

根据我上面的评论,如果您进行直接分配并使用cumsum代替sapply(cumsum是专门为您想要的内容而构建的),它会更快。

这应该有效:

test.data$sum <- cumsum(test.data[, 2])