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

R语言如何按唯一城市匹配将向量填充到数据框指定列的NA值

R数据集NA值按唯一分组批量填充方案

报错原因

直接对NA行整体赋值的操作触发长度不匹配报错:is.na(join_pop1$UK_Districts.y)筛选出的待填充行共132行,而备用名称向量pop_names仅33个元素,二者长度不一致无法直接赋值。

核心解决逻辑

33个备用名称和UK_Districts.x列的33个唯一城市值一一对应,只需将每个唯一城市值和对应的备用名称绑定,再批量映射到整列即可完成填充。

实现代码

基础R写法

# 提取唯一城市列表,顺序和pop_names一一对应
unique_cities <- unique(join_pop1$UK_Districts.x)
# 按城市匹配填充
join_pop1$UK_Districts.y <- pop_names[match(join_pop1$UK_Districts.x, unique_cities)]

更稳妥的映射写法(避免顺序错位)

如果担心唯一城市顺序和pop_names顺序不匹配,可以提前构造命名映射向量:

# 构造"城市原始名:备用名"的键值对映射
name_map <- setNames(pop_names, unique(join_pop1$UK_Districts.x))
# 按键匹配填充
join_pop1$UK_Districts.y <- name_map[join_pop1$UK_Districts.x]

dplyr写法(适配tibble操作习惯)

library(dplyr)
join_pop1 <- join_pop1 %>%
  mutate(UK_Districts.y = pop_names[match(UK_Districts.x, unique(UK_Districts.x))])

效果验证

运行后输出完全符合预期,前10行结果如下:

UK_Districts.xUK_Districts.y
Abertawe - SwanseaSwansea
Abertawe - SwanseaSwansea
Abertawe - SwanseaSwansea
Abertawe - SwanseaSwansea
Brent London BoroBrent
Brent London BoroBrent
Brent London BoroBrent
Brent London BoroBrent
Bro Morgannwg - the Vale of GlamorganVale of Glamorgan
Bro Morgannwg - the Vale of GlamorganVale of Glamorgan

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.07 10:48:02