R语言无法缩减空格、去除重音、替换字符串问题求助
R语言字符串替换失效问题解决方案
问题根因
- 最核心的原因是你的
matching_var列大概率为**因子(factor)**类型:R导入数据时默认会将字符串列转为因子类型,直接对因子列使用字符串替换函数不会修改底层的因子水平,因此改动不会生效,输出和原始数据完全一致。 - 你的原有替换代码存在两处逻辑错误:
- 替换
MY Kelantan时目标值多写了末尾空格,会导致结果出现不必要的多余空格 - 没有处理
CN Nei Mongol末尾的多余空格
- 替换
解决代码
不需要逐条手动匹配替换,用通用函数批量处理即可:
library(dplyr) library(stringr) # 先将因子列转为字符列,这是替换生效的前提 data <- data %>% mutate(matching_var = as.character(matching_var)) # 批量完成所有清理需求 data <- data %>% mutate( # 自动去除首尾空格+将中间连续多个空格替换为单个空格,一次性解决所有空格问题 matching_var = str_squish(matching_var), # 替换特殊重音字符 matching_var = str_replace(matching_var, "Los Ríos", "Los Rios"), # 替换长地名 matching_var = str_replace(matching_var, "Amurskaja oblast", "Amur") )
效果验证
运行代码后输出data$matching_var即可得到你预期的结果:
[1] "BD Mymensingh" "CN Nei Mongol" "EC Los Rios" "MY Johor" [5] "MY Kedah" "MY Kelantan" "MY Negeri Sembilan" "RU Amur"
内容的提问来源于stack exchange,提问作者Coralie
相关产品推荐
相关产品推荐

