R语言使用dplyr按另一列条件筛选数据框的代码是否正确?
解答
你写的代码无法实现目标需求。
原有代码的问题
group_by(score2) %>% filter(score1 > 0)的逻辑是按score2分组后,在每个分组内单独筛选score1 > 0的行,也就是说score2为"girl"的分组也会执行同样的筛选规则,最终会返回所有分组中score1 > 0的记录。
在你给出的示例数据上运行这段代码,会返回tim(man组score1=5>0)和poe(girl组score1=10>0)两行结果,多返回了score2为girl的poe记录,不符合要求。
正确写法
不需要分组操作,直接在filter()中传入两个需要同时满足的判断条件即可:
library(dplyr) df %>% filter(score2 == "man", score1 > 0)
运行上述代码,在示例数据中只会返回符合需求的结果:
Name score1 score2 1 tim 5 man
内容的提问来源于stack exchange,提问作者user18930359
相关产品推荐
相关产品推荐

