You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

R使用left_join按country列合并数据集时subregion列全返回NA

问题原因

两个数据集用于关联的country列字符串格式不一致,导致精确匹配失败:

  • 从dput输出可以看到,Tomig_sixty中的国家名无前导空格,例如阿尔及利亚对应值为"Algeria"
  • subregion数据集中的所有国家名开头都多了1个前导空格,对应值为" Algeria"

R的连接操作默认对连接键做完全精确匹配,带空格和不带空格的字符串会被判定为不同值,因此左连接时找不到匹配的记录,新增的subregion列全部返回NA。

修复方案

先清理subregion数据集country列的前后多余空白字符,再执行连接操作即可正常匹配:

library(dplyr)

# 清理国家名列的前后空白
subregion_clean <- subregion %>%
  mutate(country = trimws(country, which = "both"))

# 执行连接
newdataset <- Tomig_sixty %>%
  left_join(subregion_clean, by = "country")

如果需要同时清理字符串中间的多余空格、换行符等异常字符,可以替换为stringr包的str_squish()函数做标准化处理:

library(dplyr)
library(stringr)

subregion_clean <- subregion %>%
  mutate(country = str_squish(country))

清理后重新连接,Algeria等国家就会正确匹配到对应的subregion值,不会再出现全NA的问题。

内容的提问来源于stack exchange,提问作者Jhau16

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.28 14:51:17