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

R中合并数据框:实现缺失部门均值显示为0

解决方法

你遇到的重复行问题是因为full_join会保留两个表中所有匹配和不匹配的行,当两个表存在相同Department时就会生成重复条目。要实现「实际数据覆盖初始0,无数据部门保留0」的需求,有两种简洁的dplyr方案:

方案1:使用rows_update(最直接)

rows_update专门用于用另一数据框的内容更新目标数据框的匹配行,未匹配的行保持原样,完全契合你的需求:

library(dplyr)

# 定义初始数据框
initialDept_df <- data.frame(
  Department = c("Engineering", "Analysis", "Test"),
  Mean = 0
)

# 定义实际数据框
Department_df <- data.frame(
  Department = "Analysis",
  Mean = 22
)

# 执行更新
result_df <- initialDept_df %>%
  rows_update(Department_df, by = "Department")

运行后result_df即为你想要的结果:

Department Mean
1 Engineering    0
2    Analysis   22
3        Test    0

方案2:left_join + coalesce

先将实际数据左连接到初始数据框,再用coalesce优先取实际数据的Mean值,无实际数据时保留初始的0:

result_df <- initialDept_df %>%
  left_join(Department_df, by = "Department", suffix = c("_init", "_actual")) %>%
  mutate(Mean = coalesce(Mean_actual, Mean_init)) %>%
  select(Department, Mean)

该方法同样能得到目标结果,适合需要保留中间步骤数据的场景。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.26 12:27:11