0

初歩的な質問ですみません。私は 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

ありがとう

4

0 に答える 0