【问题标题】:Keep only unique IDs in data.frame (remove all IDs with more than one observation) [duplicate]仅在 data.frame 中保留唯一 ID(删除具有多个观察结果的所有 ID)[重复]
【发布时间】:2022-11-23 22:25:22
【问题描述】:

我想以仅保留 ID 的方式对下面的 data.frame 进行子集化,这些 ID 不会多次出现:

data <- data.frame(Product=c('A', 'B', 'B', 'C'),
                   Likeability=c(80, 80, 82, 70),
                   Score=c(31, 33, 33, 33),
                   Quality=c(16, 32, 56, 18))

应该变成:

data
    Product Likeability Score Quality
1       A          80    31      16
2       C          70    33      18

如果我使用像 unique() 或 distinct() 或 duplicated() 这样的命令,它通常会保留产品 B 的两个观察值之一。我想找到一种方法,如何只保留唯一值,我可以将其应用于大型数据框。最好使用 dplyr 解决方案,但也可以接受其他想法。 谢谢!

【问题讨论】:

    标签: r dataframe dplyr unique


    【解决方案1】:

    您可以尝试group + filter 条件为n()==1,如下所示

    data %>%
      group_by(Product) %>%
      filter(n() == 1) %>%
      ungroup()
    

    这使

      Product Likeability Score Quality
      <chr>         <dbl> <dbl>   <dbl>
    1 A                80    31      16
    2 C                70    33      18
    

    【讨论】:

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