初歩的な質問ですみません。私は ff パッケージを使用read.csv.ffdf
しており、データのインポートに使用されています。Excel に 5,000 万行を超える行があり、列の 1 つで累積合計を実行し、0 が見つかったらリセットしたいと考えています。累積系列を生成する以下のコードがありますが、現在の行にアクセスする方法がわかりません。 .
idx <- ffdforder(i[c("a","c","b")])
ordered_i <- i[idx, ]
ordered_i$key_a_c_d <- ikey(ordered_i[c("a", "c","d")])
cumsum_i <- ffdfdply(ordered_i, split=as.character(ordered_i$key_a_c_d), FUN= function(x) {
x <- as.data.table(x)
if(x[**current row**, d]==0)
{
result <- x[,cumsum_a_c_d :=0]
}
else
{
result <- x[, cumsum_a_c_d := cumsum(d), by = list(key_a_c_d)]
}
as.data.frame(result)
}, trace=T)
data.table
パッケージを使用して累積合計を取得しています。データテーブルの現在の行にアクセスして、0 と比較して累積をリセットするにはどうすればよいですか。以下に示すように、期待される出力が必要です。列 d の累積合計です。
a b c d Result
1 1 1 1 1
1 4 1 0 0
1 6 1 1 1
1 2 1 1 2
1 5 1 0 0
1 3 1 1 1
ありがとう