透视使用多列

时间:2017-07-17 17:28:44

标签: r aggregate

我有一个包含5列的数据集:

store_id    year    event    item    units
123         2015     sale_2   abc      2
234         2015     sale_3   def      1
345         2015     sale_2   xyz      5

我正在尝试按items转出store_id, year, and event以获取sum。例如

store_id    year    event    abc     def   xyz 
123          2015    sale_2   7       0     0
234          2015    sale_2   2       1     0

我无法找出最好的方法。通常我会在插入符号中使用dummyVars来执行此操作,但我需要总和而不是标记。我看了tapply但它不能处理超过2个分组变量。

还有其他建议吗?

2 个答案:

答案 0 :(得分:5)

{
    "name": "SequelizeEagerLoadingError"
} 

对于大型数据集,请考虑

library(reshape2)
dcast(df, store_id + year + event ~ item, fun.aggregate = sum, value.var='units')
#    store_id year  event abc def xyz
# 1:      123 2015 sale_2   2   0   0
# 2:      234 2015 sale_3   0   1   0
# 3:      345 2015 sale_2   0   0   5

答案 1 :(得分:2)

library(dplyr)
library(tidyr)
data %>%
group_by(store_id, year, event, item) %>%
summarize(N = sum(units)) %>%
spread(item, N)

您可以使用dplyr对数据进行分组和汇总,并将tidyr数据分散到所需的项目列中。