[英]data.table column assignment within a loop
这就是我的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
创建一个单独的列,以计算相应Product
的累计Sales
。
我努力了:
for (i in levels(dt$Product)) {
dt[,i:= cumsum((Product == "i") * Sales)]
}
这是我根据OP的代码尝试的方法:
dt <- dt[, .(Product, Sales)]
plevels <- levels(dt$Product)
dt[, c(paste(plevels, 'CumSales', sep = '-')) :=
lapply(plevels, function(x) cumsum(Sales * (Product == x)))]
# Product Sales A-CumSales B-CumSales C-CumSales
# 1: A 10 10 0 0
# 2: B 5 10 5 0
# 3: A 10 20 5 0
# 4: A 20 40 5 0
# 5: B 10 40 15 0
# 6: C 5 40 15 5
# 7: C 5 40 15 10
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.