我有一个数据集,其中包含在各个日期订购的各个项目的销售编号。特定顺序中的所有项目共享相同的ID。我想计算订单总计(即特定订单中所有商品的销售总和),同时保留与每个订单相关的日期(我们可以假设订单中的所有商品都具有相同的日期)。在保留日期的同时,如何在ID方面总结销售量?
这个问题与我所见过的其他问题不同,因为我想保留并折叠Date列,同时对另一个列Sales进行求和。
之前的列:Date
,ID
,Sales
后面的列:Date
,ID
,Order.Total
以下代码返回错误,因为显然不能对日期求和:
df[, lapply(.SD, sum), by = "ID"]
以下代码完全删除了“日期”字段:
df[, lapply(.SD, sum), by = "ID", .SDcols = !"Date"]
例如,如果我之前的数据集是:
DATE ID SALES
1/2 01 1
1/2 01 2
1/2 02 3
1/3 03 6
1/4 04 5
1/4 04 4
之后的我的数据集应该是:
DATE ID ORDER.TOTAL
1/2 01 3
1/2 02 3
1/3 03 6
1/4 04 9
答案 0 :(得分:0)
我想你在追吗?
dt[, .(ORDER.TOTAL = sum(SALES)), by =.(DATE, ID)]
# DATE ID ORDER.TOTAL
#1: 1/2 1 3
#2: 1/2 2 3
#3: 1/3 3 6
#4: 1/4 4 9
与
相同dt[, list(ORDER.TOTAL = sum(SALES)), by = list(DATE, ID)]
或者在基数R中使用aggregate
aggregate(SALES ~ DATE + ID, data = as.data.frame(dt), FUN = sum)
# DATE ID SALES
#1 1/2 1 3
#2 1/2 2 3
#3 1/3 3 6
#4 1/4 4 9
library(data.table)
dt <- fread("DATE ID SALES
1/2 01 1
1/2 01 2
1/2 02 3
1/3 03 6
1/4 04 5
1/4 04 4")