You need to enable JavaScript to run this app. 如何基于其他行对应值使用R dplyr填充数据框缺失值
优惠活动
大模型
产品
解决方案
定价
更多

如何基于其他行对应值使用R dplyr填充数据框缺失值

R dplyr基于已有对应关系填充缺失值方案

两种适配不同数据规模的实现方案如下:

  • 方案1适合小到中等规模数据,且每个国家至少存在1条非NA的continent记录,代码更简洁
  • 方案2适合10万行以上的大规模数据集,国家维度远小于总数据行数时性能提升尤其明显,映射表可单独维护,方便补充缺失的对应关系

方案1:分组双向填充

library(dplyr)
library(tidyr)

# 你的示例数据
df <- data.frame(
  country = c("USA","UK","Egypt","Brazil","USA", "UK"),
  continent = c("North America","Europe","Africa","South America", NA, NA)
)

# 填充逻辑
df_filled <- df %>%
  group_by(country) %>%
  fill(continent, .direction = "downup") %>% # 双向填充,确保同国家所有NA都能匹配到已有值
  ungroup()

方案2:映射表左连接(大数据量优先)

library(dplyr)

# 步骤1:从现有数据提取非NA的唯一国家-大洲对应关系,生成映射表
country_continent_map <- df %>%
  filter(!is.na(continent)) %>%
  distinct(country, continent)

# 步骤2:用映射表匹配替换原有带NA的continent列
df_filled <- df %>%
  select(-continent) %>%
  left_join(country_continent_map, by = "country")

注意:如果存在部分国家在现有数据中无任何非NA的continent记录,匹配后对应值仍为NA,手动给映射表补充该国家的对应关系后重新执行匹配即可。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.10 19:12:03