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

R语言基于公共列合并两个dataframe并实现列交替排列的方法

实现方案

核心逻辑很简单:先完成常规的按公共列合并,再对合并后的列按照df1非公共列、df2非公共列依次交替的规则重排即可。

基础R实现

# 1. 先按公共列name合并
merged_df <- merge(df1, df2, by = "name")
# 2. 提取两个表除公共列外的列名
cols_df1 <- names(df1)[-1]
cols_df2 <- names(df2)[-1]
# 3. 生成交替排列的列顺序
new_col_order <- c("name", as.vector(rbind(cols_df1, cols_df2)))
# 4. 重排列得到最终结果
final_df <- merged_df[, new_col_order]
# 可选:如果需要把输入的字符型数值转为数值型,可加这一步
final_df <- data.frame(lapply(final_df, function(x) if(is.character(x)) as.numeric(x) else x))

tidyverse(dplyr)实现

library(dplyr)
final_df <- inner_join(df1, df2, by = "name") %>%
  # 转数值为可选步骤,不需要可删除
  mutate(across(-name, as.numeric)) %>%
  # 按交替规则选择列
  select(name, unlist(purrr::map2(colnames(df1)[-1], colnames(df2)[-1], c)))

以上代码运行后得到的列顺序完全符合示例要求:name → HAN(df1)→ YHD(df2)→ ENA(df1)→ PUH(df2)依次排列。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.01 12:15:04