根据 R 中数据帧中另一列的条件过滤数据帧

use*_*174 1 r data-manipulation subset filter dataframe

我想根据条件过滤以下 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"))
Run Code Online (Sandbox Code Playgroud)
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
Run Code Online (Sandbox Code Playgroud)

输出如下:

       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
Run Code Online (Sandbox Code Playgroud)

任何帮助将非常感激。

MrF*_*ick 5

这很容易做到dplyr。你可以做

library(dplyr)

dat %>% 
  group_by(ID) %>% 
  filter("A" %in% Score)
Run Code Online (Sandbox Code Playgroud)