2017-04-15 48 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])

相關問題