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

如何用另一DataFrame替换不同列的不同值并合并数据?

问题描述

现有两个DataFrame:
df1:

v1   v2 v3  v4
RDA  NA ILL NA
OPCS NA NA  NA
OJK  BR ILL PE

df2:

v1  v2  v3  v5
RDA COL ILL P3
OPCS BR ILL P2

需求:用df2中的值替换df1对应列的缺失值,同时合并df2的v5列,得到如下结果:

v1  v2  v3  v4 v5
RDA COL ILL NA P3
OPCS BR ILL NA P2
OJK  BR ILL PE NA

此前尝试inner_join方法,得到含重复列的结果,不符合预期,寻求解决办法。

解决方案

用R语言的dplyr包可以实现需求,步骤如下:

  1. 先加载依赖包(未安装则先执行安装命令):
install.packages("dplyr")
library(dplyr)
  1. 执行合并与缺失值填充:
merged_df <- df1 %>%
  # 以v1为匹配键,保留df1所有行进行左连接
  left_join(df2, by = "v1", suffix = c(".x", ".y")) %>%
  # 用df2的v2/v3值填充df1对应列的缺失值
  mutate(v2 = coalesce(v2.x, v2.y),
         v3 = coalesce(v3.x, v3.y)) %>%
  # 移除临时重复列,调整为目标列顺序
  select(v1, v2, v3, v4, v5)

逻辑说明

  • left_join确保保留df1的全部行(包括未在df2中匹配到的OJK行),同时关联df2的对应数据
  • coalesce函数优先取df1的非缺失值,若为NA则替换为df2的对应值,正好满足缺失值替换需求
  • 最后通过select整理列顺序,清除连接产生的临时重复列(如v2.x、v3.y等)

运行后得到的merged_df即为目标结果。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.22 00:42:11