如何根据A列值筛选DataFrame中C列符合条件的行?
正确的dplyr筛选实现方法
先说说你原来代码的问题:
- 普通
if是标量判断,没法对每一行分别根据A的值应用筛选规则,得用逐行的逻辑条件 - 筛选条件搞反了:需求是移除小于阈值的行,所以要保留的是大于等于阈值的行
- 原数据里A是数值型(1/0),你写成
A == '1'是字符串比较,会匹配不到
下面是两种可行的正确写法:
方法1:直接用逻辑组合条件
library(dplyr) test <- df %>% filter( (A == 1 & C >= 0.3) | (A == 0 & C >= 20) )
方法2:用case_when更清晰(适合多条件场景)
test <- df %>% filter( case_when( A == 1 ~ C >= 0.3, A == 0 ~ C >= 20, TRUE ~ FALSE # 其他情况直接过滤掉 ) )
运行后得到的结果就是你要的预期输出:
A B C D E 1 0 0.5 5 0 1 7 0.3 4 4 0 2 20 2 2 1 0 0.9 2 1
内容的提问来源于stack exchange,提问作者Jeni
相关产品推荐
相关产品推荐

