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

R语言如何按ID关联数据集替换NA值并合并多匹配项

实现方案

以下提供R语言和Python两种常用数据处理工具的实现方法:

R语言实现

你可以用dplyr包快速完成需求,示例代码如下:

# 加载依赖包
library(dplyr)

# 1. 预处理查找表,按ID分组拼接同ID的State值
lookup_agg <- lookup_df %>%
  group_by(ID) %>%
  summarise(State_agg = paste(State, collapse = ","))

# 2. 匹配并替换主表的NA值
result <- main_df %>%
  left_join(lookup_agg, by = "ID") %>%
  mutate(State = ifelse(is.na(State), State_agg, State)) %>%
  select(-State_agg)

如果不想引入第三方包,也可以用base R实现:

# 聚合查找表
lookup_agg <- aggregate(State ~ ID, lookup_df, paste, collapse = ",")
# 匹配替换NA
na_idx <- is.na(main_df$State)
main_df$State[na_idx] <- lookup_agg$State[match(main_df$ID[na_idx], lookup_agg$ID)]

注:上述代码中main_df对应你的第一个数据集,lookup_df对应第二个State查找表。


Python实现

用pandas实现的代码如下:

import pandas as pd

# 1. 聚合查找表,拼接同ID的State
lookup_agg = lookup_df.groupby('ID')['State'].agg(','.join).reset_index(name='State_agg')

# 2. 合并主表并替换NA
result = main_df.merge(lookup_agg, on='ID', how='left')
result['State'] = result['State'].where(result['State'].notna(), result['State_agg'])
result = result.drop('State_agg', axis=1)

注:上述代码中main_df对应你的第一个数据集,lookup_df对应第二个State查找表。


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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.30 19:06:05