我有一个大型数据集(> 100,000行),并希望创建一个新列,该列可以汇总另一列的所有先前值。
对于具有100,000行和2列的模拟数据集test.data
,我创建了新的向量,该向量将第2列的内容与:
sapply(1:100000, function(x) sum(test.data[1:x[1],2]))
我稍后将此向量附加到test.table
cbind()
但这太慢了。有没有更快的方法来实现这一点,或者能够引用sapply正在进行的矢量,所以我可以更新累积总和而不是再次执行整个计算?
答案 0 :(得分:2)
根据我上面的评论,如果您进行直接分配并使用cumsum
代替sapply
(cumsum是专门为您想要的内容而构建的),它会更快。
这应该有效:
test.data$sum <- cumsum(test.data[, 2])