在R中如何删除数据框字符串列的“-州缩写”后缀保留城市名
R实现删除固定后缀的简便方法
你只需要匹配-开头到字符串末尾的所有内容批量替换即可,不需要逐个定义州缩写匹配规则。
方法1:基础R实现
直接用gsub函数写通用正则匹配:
# 匹配所有以 " - " 开头的结尾部分,替换为空 df$var1 <- gsub(pattern = " -.*", replacement = "", x = df$var1)
正则解释:.*代表匹配任意数量的任意字符,所以" -.*"会匹配从第一个-出现的位置直到字符串末尾的所有内容,不管后面是哪个州的缩写都能一次性删除。
如果想要避免城市名中偶然出现-导致误删,可以用更严格的正则匹配州缩写的格式:pattern = " - [A-Z]{2}$",其中[A-Z]{2}匹配两个大写字母,$匹配字符串末尾,只有符合「空格-空格+两位大写字母结尾」的规则才会被删除,准确率更高。
方法2:tidyverse生态实现
如果你常用tidyverse,可以用stringr::str_remove函数,写法更简洁:
library(dplyr) library(stringr) df <- df %>% mutate(var1 = str_remove(var1, " -.*"))
两种方法处理5000行数据都是毫秒级完成,完全没有性能压力。
内容的提问来源于stack exchange,提问作者Luiz Henrique Varzinczak
相关产品推荐
相关产品推荐

