R语言如何过滤数据集,仅保留选定州的对应数据条目?
R筛选指定州数据的问题解决
问题根因
- 你的
Birth.State列所有取值的开头带有大量多余空白字符,直接完全匹配"New Jersey"会命中失败 - 你使用
filter(c,grep('New Jersey',Birth.State))的语法不规范:filter第二个参数需要传入逻辑向量,而grep默认返回匹配到的行下标;同时不要用c作为数据框的变量名,c是R内置的拼接函数,命名冲突会引发未知报错
解决方法
方法1:先清洗空白再完全匹配(准确性最高,推荐)
先清除Birth.State列的首尾空白,再做等值匹配,避免其他包含New Jersey字段的无关内容被误匹配:
library(dplyr) library(stringr) # 把代码里的df替换为你自己的数据集变量名即可 result <- df %>% mutate(Birth.State = str_trim(Birth.State)) %>% filter(Birth.State == "New Jersey")
方法2:直接模糊匹配
如果不需要严格校验内容,直接用模糊匹配即可命中所有包含New Jersey字段的行:
# dplyr写法 result <- df %>% filter(str_detect(Birth.State, "New Jersey")) # 基础R写法 result <- df[grepl("New Jersey", df$Birth.State), ]
内容的提问来源于stack exchange,提问作者Zachqwerty
相关产品推荐
相关产品推荐

