0
これは私のdata.tableの外観です。右端の3つの列は、の希望の列です。data.tableループ内の列の割り当て
library(data.table)
dt <- fread('
Product Sales A-CumSales B-CumSales C-CumSales
A 10 10 0 0
B 5 10 5 0
A 10 20 5 0
A 20 40 5 0
B 10 40 15 0
C 5 40 15 5
C 5 40 15 10
')
dt[, Product:= as.factor(Product)]
私のProduct
列のレベルは常に変化しています。私はそれぞれProduct
の累積Sales
を計算する各Product
のための別の列を作成しているループを実行しようとしています。
私が試してみました:ここ
for (i in levels(dt$Product)) {
dt[,i:= cumsum((Product == "i") * Sales)]
}
私がすることができます、あなたのC-CumSalesがあなたの入力 – akrun
まあ基づいて、間違っていると思います'(i):='のように括弧を入れます。 – Frank
@Frankあなたは正しいです。私は「dcast(dt [、1:2、with = FALSE]、Product + 1:nrow(dt)+ rowid(Product)〜Product、value.var = "Sales"、fill = 0)[、c ( "A"、 "B"、 "C"):= lapply(.SD、cumsum)、.SDcols = A:C] [] ' – akrun