如何在R语言中验证两列之和是否等于第三列?
解决方法:验证
casual+registered是否等于cnt 错误原因分析
你的代码存在三个关键问题:
mutate()中不需要重复传入数据集名称dcbikeshare,管道符%>%已经自动将左侧数据集传递给mutate()- 相等判断需要用双等号
==,单等号=是赋值操作,这是第一个报错的直接原因 if_else()的返回值如果是逻辑值,不需要加引号,加引号会变成字符向量,不符合if_else()对返回值类型的要求(第二个报错的原因)
修正后的if_else()代码
dcbikeshare <- dcbikeshare %>% mutate(check_sum = if_else(casual + registered == cnt, TRUE, FALSE))
甚至可以更简洁——因为逻辑判断本身就会返回TRUE/FALSE,无需嵌套if_else():
dcbikeshare <- dcbikeshare %>% mutate(check_sum = (casual + registered == cnt))
其他验证方法
- 快速检查所有行是否符合条件
如果不需要生成新列,只是想验证整体是否符合预期,直接用all():
all(dcbikeshare$casual + dcbikeshare$registered == dcbikeshare$cnt)
返回TRUE表示所有行都满足,FALSE则存在不匹配的行。
- 定位不匹配的具体行
如果想找出哪些行不符合条件,用筛选语句:
dcbikeshare %>% filter(casual + registered != cnt)
内容的提问来源于stack exchange,提问作者newtor
相关产品推荐
相关产品推荐

