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

R Studio合并DataFrame时避免公共列出现.x/.y后缀的问题

你当前用full_join是横向匹配合并,会将非关联键的同名列加.x/.y后缀区分,不符合垂直堆叠行的需求,可根据场景选择以下解决方案:

方案1:结构完全一致时直接行绑定(最适合大规模批量场景)

如果所有待合并的DataFrame列名、列顺序完全一致,直接使用dplyr::bind_rows做行堆叠即可,自动合并同名列,不会产生拆分后缀:

library(dplyr)
# 两个表合并
test3 <- bind_rows(test1, test2)

# 多循环批量场景:把所有待合并的DataFrame存入列表后一次性合并,性能远高于循环逐次rbind
df_list <- list(test1, test2, test3, ..., testn) 
final_df <- bind_rows(df_list)

运行后直接得到你期望的输出:

MCN_ID UNS 1930
1   AABB        1
2   BBAA       23

方案2:需筛选指定列合并的场景

如果待合并表存在多余列,仅需要保留核心列(比如MCN_ID、UNS 1930),可以结合purrr::map_dfr批量提取后合并:

library(dplyr)
library(purrr)

# 定义要保留的核心列
core_cols <- c("MCN_ID", "UNS 1930")
# 批量处理列表中所有表,提取核心列后合并
final_df <- map_dfr(df_list, ~ .x %>% select(all_of(core_cols)))

方案3:存在重复MCN_ID需去重的场景

如果多个表中存在相同MCN_ID的记录,需要去重可追加对应处理逻辑:

# 按MCN_ID去重,保留第一条出现的记录
final_df <- final_df %>%
  distinct(MCN_ID, .keep_all = TRUE)

# 按MCN_ID去重,保留UNS 1930数值最大的记录
final_df <- final_df %>%
  group_by(MCN_ID) %>%
  slice_max(`UNS 1930`, n = 1, with_ties = FALSE) %>%
  ungroup()

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.17 09:24:10