我有其中R問題,ffdfdply功能řffdfdply分裂問題
a=as.ffdf(data.frame(b=11:20,c=c(4,4,4,4,4,5,5,5,5,5), d=c(1,1,1,0,0,0,1,0,1,1)))
ffdfdply(a, split=a$c, FUN= function(x) {data.frame(cumsum(x$d))}, trace=T)
它產生的輸出是簡單地不考慮分割準則的累積和。
我需要這樣的
c cumsum
4 1
4 2
4 3
4 4
4 4
5 0
5 1
5 1
5 2
5 3
輸出我們可以包括「分裂」下的多個列?如果有人提供了一個例子,這將是非常棒的。
謝謝。
@jwijffels,我對另一組數據
i=as.ffdf(data.frame(a=c(1,1,1,1,1,1,1,1,1,1,2,2,2,2,2,2,2,2,2,2,2), b=c(1,4,6,2,5,3,1,4,3,2,8,7,1,3,5,4,2,6,3,1,2), c=c(1,1,1,1,1,1,2,2,2,2,1,1,1,1,1,1,1,1,2,2,2), d=c(1,0,1,1,0,1,0,1,1,0,0,1,1,1,0,0,1,1,1,1,0)))
我收到的輸出是不正確的測試解決方案。我需要a列和c列的累積和d列。
下面的步驟是正確的,給了正確的結果
idx <- ffdforder(i[c("a","c","b")])
ordered_i <- i[idx, ]
ordered_i$key_a_c <- ikey(ordered_i[c("a", "c")])
,但是當我嘗試累計總和,得到不正確的結果。
cumsum_i <- ffdfdply(ordered_i, split=as.character(ordered_i$key_a_c), FUN= function(x) {
## Data in RAM, on which you can use data.table
x <- as.data.table(x)
result <- x[, cumsum_a_c := cumsum(x$d), by = list(key_a_c)]
as.data.frame(result)
}, trace=T)
請幫忙。我需要在大數據上運行這些命令。
可能重複[使用ffdfdply來拆分數據並獲得每個id在拆分中的特徵](http://stackoverflow.com/questions/10981384/using-ffdfdply-to-split-data -and-GET-特性 - 的 - 每個-ID-中最分裂 – thelatemail
使用cumsum_a_c):不是cumsum_a_c = cumsum(d):= cumsum(X $ d)。這是FUN中正確的data.table語法。 – jwijffels