【问题标题】:R List combinations of items with count of theseR列出这些项目的组合
【发布时间】:2022-01-22 21:39:04
【问题描述】:

我想查看我有多少条产品组合的记录。有些帐户有几个不同的产品,有些有 3 或 4 个。我已经做了一个分组,它给出了每个帐户附加的产品数量:

test <- data %>%
  unique() %>%
  group_by(ACCOUNT) %>% summarise(number = n())

接下来我要做的是对产品排列进行分组,这样我就可以计算 a+b、b+c、a+b+c、a+b+m、m+n 等的每一个。 我不希望所有可能的排列都存在,但我不知道组合的最大产品数量是多少——这是我正在努力解决的问题之一。 (虽然可能大约是 5 或 6 个)

Edited to add sample data
| Account | Product |
| -------- | -------------- |
| 1    | a           |
| 1  | b            |
|1  |c  |
|2  |a  |
|2   |c  |
|3  |a  |
|3  |c  |
|4  |a  |
|4  |b|

期望的结果 - 单独计算每个独特的组合。

| Product combo | Count |
| -------- | -------------- |
| ab  | 1           |
| ac  | 2            |
|abc |1  |

【问题讨论】:

  • 如果您发布了一个小的可重现数据集,ppl 将能够为您提供帮助
  • 我假设您对一起购买的产品感兴趣(也许不),但您必须向我们提供示例数据(如前所述),但还需要更多关于如何定义您的产品的信息团体。例如 a+b+c 是否也应计入 a+bb+ca+c ?所以除了小样本数据集,还要提供想要的输出。

标签: r dplyr


【解决方案1】:

我使用; 分隔符,因为它看起来更好,但这里是dplyr 版本:

library(dplyr)
df %>%
  group_by(Account) %>%
  summarize(combo = paste(sort(Product), collapse = ";"), .groups = "drop") %>%
  count(combo)
# # A tibble: 3 × 2
#   combo Count
#   <chr> <int>
# 1 a;b       1
# 2 a;b;c     1
# 3 a;c       2

使用这些数据:

df = read.table(text = ' Account  Product 
 1     a           
 1   b            
1  c  
2  a  
2   c  
3  a  
3  c  
4  a  
4  b', header = T)

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-01-30
    • 1970-01-01
    • 2021-07-30
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多