R语言tibble数据框筛选b4列保留NA与值为6行的问题咨询
错误原因说明
你原来的代码存在三个问题:
- 筛选列名写错:需求是筛选
b4列,但代码里写的是b2列 - 类型不匹配:你给的匹配值
"6"、"NA"都是字符串格式,但你的b4列是数值型,R会把字符串和数值判定为不相等 - 缺失值匹配逻辑错误:
%in%运算符无法识别NA匹配,即使你写b4 %in% c(6, NA),遇到b4为NA的行时返回值也是NA,不会被filter判定为符合条件
正确实现代码
用is.na()专门判断缺失值,和数值匹配条件做或逻辑拼接即可,这是R里处理缺失值筛选的通用写法:
library(dplyr) my_df %>% filter(b4 == 6 | is.na(b4))
运行后会保留4行符合要求的记录:b4为NA的第1、3行,以及b4为6的第2、8行。
内容的提问来源于stack exchange,提问作者lofus77
相关产品推荐
相关产品推荐

