例如,我有三列-ID列,Visit列,Drug列。 “药物”列的字符值为A,B,C和D。问题是每个ID都只有A或B或C或D或A和B的组合。
ID Visit Drug
1 1 A
1 2 B
1 3 A
2 1 B
2 2 B
3 1 C
3 2 C
因此,如果我要过滤仅包含药物B的ID(不能同时包含A和B),该如何过滤呢?从上面开始,我只想要ID 2,而不想要ID 1,因为ID 1同时具有A和B。
我尝试了这段代码,但结果却给我错误
df %>%
group_by(id) %>%
filter(drug == "B" | drug != "A" & drug != "B" )
任何帮助将不胜感激!
答案 0 :(得分:3)
在这种情况下,您应该为整个Drug
向量指定条件,就像下面的all
一样:
df %>% group_by(ID) %>% filter(all(Drug == "B"))
# A tibble: 2 x 3
# Groups: ID [1]
# ID Visit Drug
# <int> <int> <fct>
# 1 2 1 B
# 2 2 2 B