如何筛选R语言数据框中所有Type行仅为A的ID?
问题分析与解决方案
你的代码逻辑存在偏差:all("A" %in% Type)仅判断当前ID对应的Type列中存在A,但不会排除其他类型(比如ID2的Type里既有A也有B,这个条件依然会成立)。而你需要筛选的是所有Type行都只包含A的ID,因此得更换判断条件。
正确代码
可以用两种等价的逻辑实现需求:
all(Type == "A"):检查当前分组内所有Type值都是A!any(Type != "A"):检查当前分组内没有任何一个Type不是A
具体代码如下:
library(tidyverse) DATA <- read.table(h=T,text= " ID Type 1 A 1 A 1 A 2 B 2 B 2 A 3 A 3 A") # 方法1:验证所有Type均为A result <- DATA %>% group_by(ID) %>% filter(all(Type == "A")) %>% ungroup() # 可选操作,取消分组状态 # 方法2:验证不存在非A的Type result <- DATA %>% group_by(ID) %>% filter(!any(Type != "A")) %>% ungroup() print(result)
运行结果
输出完全匹配你需要的Desired_output:
# A tibble: 5 × 2 ID Type <int> <chr> 1 1 A 2 1 A 3 1 A 4 3 A 5 3 A
内容的提问来源于stack exchange,提问作者Simon Harmel
相关产品推荐
相关产品推荐

