我有一个看起来像这样的数据框
Vehicle Model Month Sales
A XXY 1 10
A XXY 1 100
A XXY 2 40
A XXY 3 10
A YYX 3 10
A YYX 3 33
B ZZZ 1 50
B ZZY 2 60
我希望能够按如下方式对其进行转换:
Vehicle Model 1 2 3 4 5
A XXY 2 1 1 0 0
A YYX 0 0 2 0 0
B ZZZ 1 0 0 0 0
B ZZY 0 1 0 0 0
基本上我想要 - 分组2个字段(Vehicle,Model),然后计算“Sales”BY BY列中的记录数,并转置数据,使Month变为列,Vehicle / Model为我的行。有些型号最长可能不会有12个月,但我希望显示所有第1列到第12列,如果没有数据则显示0
数据框非常大。有什么建议?感谢
答案 0 :(得分:0)
不确定"一步"部分问题。通过几个步骤完成它并不起作用?
library(data.table)
s <- " Vehicle Model Month Sales
A XXY 1 10
A XXY 1 100
A XXY 2 40
A XXY 3 10
A YYX 3 10
A YYX 3 33
B ZZZ 1 50
B ZZY 2 60"
dt <- fread(s)
dt[, sale_count := .N, by = .(Vehicle, Model, Month)]
dt[, Sales := NULL]
dt <- unique(dt)
dcast(dt, Vehicle + Model ~ Month, value.var = "sale_count")
结果:有几个月没有NA而不是0。如果需要,可以将其更改为0.
Vehicle Model 1 2 3
1: A XXY 2 1 1
2: A YYX NA NA 2
3: B ZZY NA 1 NA
4: B ZZZ 1 NA NA