【问题标题】:filter dataframe based on condition on another column in the dataframe in R根据R中数据框中另一列的条件过滤数据框
【发布时间】:2018-09-15 17:42:52
【问题描述】:

我想根据条件过滤以下 R 数据帧,即如果“分数”列在同一 ID 中没有 A,则删除与该 ID 关联的行。例如,对于 ID 号 2,只有 C 和 B,而没有 A。所以删除 ID 号为 2 的行。

 dat <- structure(list(ID = c(1L, 1L, 1L, 2L, 2L, 2L, 3L, 3L, 3L, 3L), 
    Score = structure(c(1L, 1L, 2L, 3L, 2L, 2L, 2L, 3L, 3L, 1L
    ), .Label = c("A", "B", "C"), class = "factor"), Info = c(1L, 
    10L, 7L, 8L, 9L, 1L, 7L, 8L, 3L, 2L)), class = "data.frame", row.names = c("1", 
"2", "3", "4", "5", "6", "7", "8", "9", "10"))
dat
   ID Score Info
1   1     A    1
2   1     A   10
3   1     B    7
4   2     C    8
5   2     B    9
6   2     B    1
7   3     B    7
8   3     C    8
9   3     C    3
10  3     A    2

输出如下:

       ID  Score Info
1     1     A    1
2     1     A    10
3     1     B    7
4     3     B    7
5     3     C    8
6     3     C    3
7     3     A    2

任何帮助将不胜感激。

【问题讨论】:

    标签: r dataframe filter subset data-manipulation


    【解决方案1】:

    使用dplyr 很容易做到这一点。你可以这样做

    library(dplyr)
    
    dat %>% 
      group_by(ID) %>% 
      filter("A" %in% Score)
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2021-11-22
      • 1970-01-01
      • 2018-11-12
      • 2021-09-08
      • 2012-12-21
      • 2023-03-12
      • 2017-08-15
      • 1970-01-01
      相关资源
      最近更新 更多