【问题标题】:R-Filter Out Data Based on the Multiple Conditions基于多个条件的 R 过滤数据
【发布时间】:2019-08-26 20:51:02
【问题描述】:

我有一个数据框。它的一部分看起来像这样:

PN 供应商 Date1 Q_QTY 价格 B_QTY Date2 1023242 1 2017 年 6 月 2 日 1 9.32 250 2019 年 7 月 1 日 1023242 1 2017 年 6 月 2 日 1 8.81 100 2017 年 5 月 3 日 1023242 1 2017 年 6 月 2 日 1 9.50 200 2019 年 7 月 1 日 1023242 2 "" 1 152.26 1 2019 年 4 月 9 日 1023242 1 "" 0 9.32 250 2019 年 7 月 1 日 1023242 1 "" 0 8.81 100 2017 年 5 月 3 日 1023242 1 "" 0 9.50 200 2019 年 7 月 1 日

PN 有很多,每个 PN 可以由不同的供应商生产。由于某些原因,有些“重复”记录除了“Date1”之外的所有列都相同,例如第一行和第五行。

我希望输出仅包含基于相同 PN 和供应商的 Date1 列中没有“”的行,并且还包括具有相同 PN 但供应商不同的行,尽管 Date1 是“”。

这是我想要的输出:

PN 供应商 Date1 Q_QTY 价格 B_QTY Date2 1023242 1 2017 年 6 月 2 日 1 9.32 250 2019 年 7 月 1 日 1023242 1 2017 年 6 月 2 日 1 8.81 100 2017 年 5 月 3 日 1023242 1 2017 年 6 月 2 日 1 9.50 200 2019 年 7 月 1 日 1023242 2 "" 1 152.26 1 2019 年 4 月 9 日

【问题讨论】:

    标签: r dataframe


    【解决方案1】:

    我们可以使用distinct

    library(dplyr)
    df1 %>%
        distinct(PN, Supplier, Price, B_QTY, .keep_all = TRUE)
    #   PN Supplier    Date1 Q_QTY  Price B_QTY    Date2
    #1 1023242        1 6/2/2017     1   9.32   250 7/1/2019
    #2 1023242        1 6/2/2017     1   8.81   100 5/3/2017
    #3 1023242        1 6/2/2017     1   9.50   200 7/1/2019
    #4 1023242        2              1 152.26     1 4/9/2019
    

    或与duplicated 来自base R

    df1[!duplicated(df1[c(1:2, 5:6)]),]
    

    数据

    df1 <- structure(list(PN = c(1023242L, 1023242L, 1023242L, 1023242L, 
    1023242L, 1023242L, 1023242L), Supplier = c(1L, 1L, 1L, 2L, 1L, 
    1L, 1L), Date1 = c("6/2/2017", "6/2/2017", "6/2/2017", "", "", 
    "", ""), Q_QTY = c(1L, 1L, 1L, 1L, 0L, 0L, 0L), Price = c(9.32, 
    8.81, 9.5, 152.26, 9.32, 8.81, 9.5), B_QTY = c(250L, 100L, 200L, 
    1L, 250L, 100L, 200L), Date2 = c("7/1/2019", "5/3/2017", "7/1/2019", 
    "4/9/2019", "7/1/2019", "5/3/2017", "7/1/2019")), 
    class = "data.frame", row.names = c(NA, 
    -7L))
    

    【讨论】:

      猜你喜欢
      • 2022-07-21
      • 2021-12-14
      • 1970-01-01
      • 2021-11-21
      • 2019-09-10
      • 1970-01-01
      • 2019-10-28
      • 2010-10-22
      • 1970-01-01
      相关资源
      最近更新 更多