R语言如何对数据框单列按指定结尾短语筛选记录
R筛选数据框保留areaname末尾为MSA的记录
直接用R原生的字符串正则匹配就能实现,不需要依赖第三方包,核心是用字符串结尾锚定符$精准匹配末尾的MSA短语,天然排除末尾为MicroSA或其他后缀的条目。
- 第一步:构造示例测试数据
areaname <- c("Albany NY MSA", "Albany GA MSA", "Aberdeen SD MicroSA", "Reno NV MSA", "Fernley NV MicroSA", "Syracuse NY MSA") Employment <- c(100,104,108,112,116,88) testitem <- data.frame(areaname, Employment)
- 第二步:执行筛选
用grepl()函数匹配areaname列中以MSA结尾的记录,正则规则MSA$代表匹配字符串最末尾的"MSA"字符,末尾是MicroSA的条目结尾三个字符是"cSA",完全不会被匹配到,直接被排除:
msa_result <- testitem[grepl("MSA$", testitem$areaname), ]
- 筛选结果校验
运行后得到的msa_result仅保留目标条目:
| areaname | Employment |
|---|---|
| Albany NY MSA | 100 |
| Albany GA MSA | 104 |
| Reno NV MSA | 112 |
| Syracuse NY MSA | 88 |
补充严谨匹配规则:如果你的数据里可能出现类似"XXXMSA"(MSA和前面内容连在一起、不是独立短语)的异常值,可以把正则改成
\\sMSA$,要求MSA前面必须有一个空格,确保匹配到的是作为独立后缀短语的MSA,对应代码如下:msa_result_strict <- testitem[grepl("\\sMSA$", testitem$areaname), ]
内容的提问来源于stack exchange,提问作者Tim Wilcox
相关产品推荐
相关产品推荐

