我有一个购买数据,每个客户购买的每个品牌的金额。我的dt_groupped看起来像这样:
| 识别号|品牌|nr_采购|
| - ------|- ------|- ------|
| 1个|品牌1|1个|
| 1个|品牌2|第二章|
| 第二章|品牌1|三个|
| 第二章|品牌2|第二章|
| 第二章|品牌3|五个|
我想计算矩阵,在矩阵中,我将获得每个家庭购买每2个品牌组合的次数信息(例如ID = 2购买了5次品牌1和品牌2,我不想被更多变量分割,例如品牌1和品牌2%品牌3)
我的预期输出为:
| 识别号|品牌|nr_采购|
| - ------|- ------|- ------|
| 1个|品牌1|1个|
| 1个|品牌2|第二章|
| 1个|品牌1和品牌2|三个|
| 第二章|品牌1|三个|
| 第二章|品牌2|第二章|
| 第二章|品牌3|五个|
| 第二章|品牌1和品牌2|五个|
| 第二章|品牌2和品牌3|七|
| 第二章|品牌1和品牌3|八个|
我试了这个代码:
dt_grouped <- dt %>% group_by(ID, Brand) %>%
summarise(nr_purchases = sum(nr_products_bought))
# Create a new data table with the combinations of brands for each ID
dt_result <- data.table()
for (id in unique(dt$ID)) {
brands <- dt_grouped[ID == id, Brand]
brands <- paste(brands, collapse = ", ")
nr_purchases <- sum(dt_grouped[ID == id, nr_purchases])
dt_result <- rbind(dt_result, data.table(ID = id, Brand = brands, nr_purchases = nr_purchases))
}
但不幸的是给了我一个错误:"in dt_grouped [ID == id,Brand] object HHKEY,Brand not found"您知道为什么会出现该错误吗?/也许有更有效的编码方法。
谢谢你帮忙
3条答案
按热度按时间tuwxkamq1#
下面是一个基于自连接的方法:
uwopmtnx2#
晚了3分钟......下面是使用data.table的答案。
pcww981p3#
使用
combn
: