我有一个包含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个分组变量。
还有其他建议吗?
答案 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数据分散到所需的项目列中。