r - 在 R 中对多行进行分组过滤

标签 r if-statement filter dplyr group-by

我有一个看起来像这样的数据框,带有 ID 和两个条件:

df <- data.frame(ID=c("A", "A", "A", "B", "C"), cond1=c("yes", "yes", "no", "no", "yes"), cond2=c("no", "no", "yes", "yes", "yes"))
df
   ID cond1 cond2
1  A   yes    no
2  A   yes    no
3  A    no   yes
4  B    no   yes
5  C   yes   yes

我想过滤适用 cond1 和 cond2 的 ID(= 是),但它不必在同一行中为真。这意味着我想过滤掉 ID A 和 C,而不是 B。

我尝试使用 dplyr 进行 group_by() 和 filter():

df %>%
group_by(PID)%>%
filter(cond1==yes&cond2==yes)

但这只会过滤掉条件 1 和条件 2 都适用的 PID/行(因此只有 ID C/行 5)。

如果两个条件都使 t0 在一个组中为真,但在一行中不为真,我该如何按组过滤 PID/行?

谢谢!

最佳答案

您可以使用任何 -

library(dplyr)

df %>%
  group_by(ID) %>%
  filter(any(cond1 == 'yes') && any(cond2 == 'yes')) %>%
  ungroup

#  ID    cond1 cond2
#  <chr> <chr> <chr>
#1 A     yes   no   
#2 A     yes   no   
#3 A     no    yes  
#4 C     yes   yes  

关于r - 在 R 中对多行进行分组过滤,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/68510793/

相关文章:

C#,获取用户值并重置它

Jquery 使用复选框选择表行

javascript - 抓取引用 R 中外部 javascript 脚本的 Javascript 渲染网页

r - 从字符向量中提取和计算常用词对

r - 如何将两列与数组组合

python - 在 python 中返回 "for if in"语句

xml - XSLT-2.0 IF 语句/分组

excel公式根据条件过滤范围

在列中第一次出现值后删除行及其后续行(使用 dplyr)

r - 带有非连续字母的参数缩写(部分匹配++)?