如何合并行列名相同但值不同的DataFrame并按列分组?
合并同名列并分组排列的解决方案
方法一:基础R实现
先构建与案例匹配的示例数据框:
# 创建数据框1 data1 <- data.frame( c1 = c(2, 0.5, 3), c2 = c(3, 2, 4), c3 = c(1, 3, 2), row.names = c("r1", "r2", "r3") ) # 创建数据框2 data2 <- data.frame( c1 = c(3, 6, 4), c2 = c(5, 2, 1), c3 = c(3, 3, 7), row.names = c("r1", "r2", "r3") )
执行合并与列排序操作:
# 按行合并两个数据框 combined_df <- cbind(data1, data2) # 对列名排序,实现同名列分组 sorted_columns <- sort(colnames(combined_df)) # 重新排列数据框列顺序 final_result <- combined_df[, sorted_columns]
运行后final_result即为你需要的输出格式。
方法二:dplyr包实现(更简洁)
若使用tidyverse工具链,可通过以下代码快速完成:
library(dplyr) final_result <- bind_cols(data1, data2) %>% select(sort(names(.)))
关键逻辑说明
你之前用cbind得到的结果仅列顺序不符合要求,核心解决思路是对合并后的列名进行排序——sort()会自动将相同列名归为连续组,正好满足同名列相邻排列的需求。
内容的提问来源于stack exchange,提问作者Dandalf_the_gray
相关产品推荐
相关产品推荐

