R语言按多列组合条件过滤删除数据行的最简实现方法
你自行编写的过滤代码没有达到预期,是因为逻辑条件写错了:EXP_MAN != 2 & Ethnicity_Rescuer !=1 会保留同时满足EXP_MAN不为2、且Ethnicity_Rescuer不为1的行,相当于把所有EXP_MAN=2的行、所有Ethnicity_Rescuer=1的行都删除了,和你「仅删除同时满足两个条件的行」的需求不符。
最简实现方案
不需要额外生成标记列,直接对要排除的组合条件整体取反即可,一行代码就能完成需求:
mydata <- mydata %>% filter(!(EXP_MAN == 2 & Ethnicity_Rescuer == 1))
如果不想用括号,也可以根据德摩根定律改写为完全等价的逻辑,效果和上面的代码、以及你最初的多步代码完全一致:
mydata <- mydata %>% filter(EXP_MAN != 2 | Ethnicity_Rescuer != 1)
内容的提问来源于stack exchange,提问作者anne.olsen.1994
相关产品推荐
相关产品推荐

