【问题标题】:Drop observations if there are inconsistent variables within same id (R)如果同一 id (R) 中存在不一致的变量,则删除观察结果
【发布时间】:2022-08-02 22:35:18
【问题描述】:
structure(list(id = c(123L, 123L, 123L, 45L, 45L, 9L, 103L, 103L, 
22L, 22L, 22L), age = c(69L, 23L, 70L, 29L, 29L, 37L, 25L, 54L, 
40L, 40L, 41L)), class = \"data.frame\", row.names = c(NA, -11L
))

    id age
1  123  69
2  123  23
3  123  70
4   45  29
5   45  29
6    9  37
7  103  25
8  103  54
9   22  40
10  22  40
11  22  41

如果一个 id 与不同的年龄值相关联,我想删除它的所有观察结果。我怎样才能做到这一点?

我会留下:

id  age
45  29
45  29
9   37

    标签: r


    【解决方案1】:

    dplyr 方法:

    library(dplyr)
    dat  |>
        group_by(id)  |>
        filter(n_distinct(age)==1)
    

    【讨论】:

      【解决方案2】:

      如果没有外部包,你可以使用ave()

      df |>
        subset(ave(age, id, FUN = \(x) length(unique(x))) == 1)
      
      #   id age
      # 4 45  29
      # 5 45  29
      # 6  9  37
      

      【讨论】:

        猜你喜欢
        • 2013-07-12
        • 2022-01-16
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2023-03-08
        • 2021-06-27
        • 2023-03-21
        • 1970-01-01
        相关资源
        最近更新 更多