R语言如何使用filter函数筛选数据列中匹配多个值的记录
R中dplyr对同一列做多个离散值筛选的实现方案
==运算符仅支持单值精确匹配,直接传入多个字符串无法被正确解析,这是之前代码运行失败的原因。同一列匹配多个取值有两种标准写法:
写法1(推荐,适配多值场景,扩展性最好):使用
%in%匹配运算符
用c()把所有需要筛选的目标值组合成向量,判断列值是否在这个目标值集合内即可,代码如下:filtered_data <- filter(data, tailnum %in% c("N76515", "N76516"))后续如果需要新增筛选的tailnum取值,直接在
c()里追加对应的字符串就行,不需要改动判断逻辑。写法2(适合筛选值很少的场景):用逻辑或
|拼接单值判断条件
把每个单值匹配的判断条件用或运算符连接,满足任意一个条件的记录都会被保留:filtered_data <- filter(data, tailnum == "N76515" | tailnum == "N76516")注意:每个判断条件都必须完整写出
列名 == 值的结构,不能简写为tailnum == "N76515" | "N76516",这种写法会让R把后半段的字符串单独做逻辑判断,返回错误的筛选结果。
内容的提问来源于stack exchange,提问作者Joseph Carthof
相关产品推荐
相关产品推荐

