2017-04-15 41 views
1

我有一个大型数据集(> 100,000个行),并且希望创建一个新列,用于总计另一列的所有先前值。有效地总结大列中的所有以前的行

对于模拟数据集test.data 10万行2列,我创建与总结第2列的内容的新载体:

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

我追加这个载体的test.tablecbind()这是后然而,太慢了。有没有更快的方法来完成这个任务,或者能够引用sapply在sapply中创建的向量,以便我可以更新累积和而不是再次执行整个calc?

+0

你尝试合并() – user2510479

+1

您是否考虑过直接创建它使用cumsum? –

+0

像'test.data $ sum < - cumsum(test.data [,2])''? –

回答

1

根据我上面的评论,如果你直接分配并使用cumsum而不是sapply(cumsum专门为你想做的事情而构建),它会更快。

这应该工作:

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

相关问题