【问题标题】:R How to find the most frequent combinationsR如何找​​到最频繁的组合
【发布时间】:2020-05-05 12:31:11
【问题描述】:

我有一个看起来像这样的客户数据集 df

ID | Item |
1  | A    |
1  | B    |
1  | C    |
2  | A    |
2  | B    |
2  | B    |
3  | A    |
3  | B    |
3  | C    |
4  | A    |
4  | B    |
4  | C    |
5  | A    |
5  | B    |

在 R 中,我如何找到客户最常购买的商品组合?

我试过了

df %>% 
  group_by(ID,Item) %>%
  mutate(n = n()) %>%
  group_by(Item) %>% 
  top_n(3, Item) %>% 
  select(-n)

但它似乎不起作用。我可以得到一个 dplyr 解决方案吗?

输入:

structure(list(ID = c(1, 1, 1, 2, 2, 2, 3, 3, 3, 4, 4, 4, 5, 
5), Item = c("A", "B", "C", "A", "B", "B", "A", "B", "C", "A", 
"B", "C", "A", "B")), row.names = c(NA, -14L), class = c("tbl_df", 
"tbl", "data.frame"))

【问题讨论】:

  • 你能显示预期的输出吗?

标签: r dplyr


【解决方案1】:

一个dplyr 选项可能是:

df %>%
 group_by(ID) %>%
 summarise(Item = paste(sort(unique(Item)), collapse = "")) %>%
 count(Item)

  Item      n
  <chr> <int>
1 AB        2
2 ABC       3

【讨论】:

  • 嗨,tmfmnk,您的代码似乎有效。你能解释一下你的代码中发生了什么,尤其是总结部分吗?
  • 当然。它获取每个 ID 的唯一项目,对它们进行排序,然后将它们粘贴在一起。因此,对于每个 ID,都有一串唯一的有序值。基于此,它执行计数。
猜你喜欢
  • 2021-01-13
  • 1970-01-01
  • 2020-11-23
  • 2021-04-21
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多