【问题标题】:Filter multiple occurrences based on group [duplicate]根据组过滤多个事件[重复]
【发布时间】:2020-01-12 12:54:56
【问题描述】:

我有一个如下所述的数据集:

df=data.frame(Supplier_id=c("1","2","7","7","7","4","5","8","12","7"), Supplier=c("Tian","Yan","Goldy","Goldy","Goldy","Amy","Lauren","Cassy","Shaan","Goldy"),Date=c("1/17/2019","4/30/2019","11/29/2018","11/29/2018","11/29/2018","5/21/2018","5/23/2018","5/24/2018","6/15/2018","6/20/2018"),Buyer=c("Unclassified","Unclassified","Kelly","Kelly","Kelly","Kelly","Amanda","Echo","Shao","Shao"))

df$Supplier_id=as.numeric(as.character(df$Supplier_id))

因此,df 如下所示:


| Supplier_id | Supplier | Date       | Buyer        |
|-------------|----------|------------|--------------|
| 1           | Tian     | 1/17/2019  | Unclassified |
| 2           | Yan      | 4/30/2019  | Unclassified |
| 7           | Goldy    | 11/29/2018 | Kelly        |
| 7           | Goldy    | 11/29/2018 | Kelly        |
| 7           | Goldy    | 11/29/2018 | Kelly        |
| 4           | Amy      | 5/21/2018  | Kelly        |
| 5           | Lauren   | 5/23/2018  | Amanda       |
| 8           | Cassy    | 5/24/2018  | Echo         |
| 12          | Shaan    | 6/15/2018  | Shao         |
| 7           | Goldy    | 6/20/2018  | Shao         |

现在,我想过滤掉每个唯一买家只出现一次的 Supplier_id。例如,在上面的数据集中,Supplier_id '1' 和 '2' 属于 'unclassified' 买家,但因为它们有不同的 id,我不希望它们出现在我的最终输出中。但是,当我们查看买家“Kelly”时,它有两个供应商 ID,“7”和“4”,其中“7”出现了 3 次,而“4”只出现了一次。所以,输出表应该有supplier_id='7'的记录。分组应基于“买方”。因此,重要的是要注意,由于 'Kelly' 和 'Shao' 都存在供应商 ID '7',但对于这两个买家,它应该以不同的方式分组,而不是一起考虑。

预期的输出应该是:

| Supplier_id | Supplier |       Date | Buyer_id |
|-------------|:--------:|-----------:|----------|
| 7           |   Goldy  | 11/29/2018 | Kelly    |
| 7           |   Goldy  | 11/29/2018 | Kelly    |
| 7           |   Goldy  | 11/29/2018 | Kelly    |

我曾尝试使用 group_by 和 filter,但这不起作用,因为每个买家都有不同的供应商 ID。我也尝试使用重复但不确定如何为每个买家分组供应商 ID。

df <-df %>% group_by(Buyer) %>% filter(Supplier_id>1)

还有这个

df2=df[duplicated(df[1]) | duplicated(df[1], fromLast=TRUE),]

编辑:原始数据集有很多这样的实例,每个买家有 n 个不同的供应商 ID。 还有什么其他方法可以获得所需的输出?

【问题讨论】:

  • @akrun 原始数据集有很多这样的实例,每个买家有 n 次不同的供应商 ID。所以我不能根据你重复帖子的参考来限制我的大小。
  • 另外,如果您指的是一个分组列与多列,据我所知,这是相同的逻辑
  • 另外,添加了一个除了数据标识符名称完全相似的重复标签

标签: r filter group-by aggregate distinct-values


【解决方案1】:

我认为你需要 -

df %>% group_by(Supplier_id, Buyer) %>% filter(n() > 1)

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2021-01-27
    • 1970-01-01
    • 1970-01-01
    • 2017-03-13
    • 2018-11-29
    • 2017-08-03
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多