R语言merge合并同列名数据框列拆分 如何得到2列目标表
问题原因
你用错了合并函数。merge()是横向关联合并函数,逻辑是按指定公共列的取值匹配,将两个表的列横向拼接。你的两个数据框mean_weight取值不同,非公共列sd_weight会被自动添加.x/.y后缀区分来源,匹配失败的位置填充NA,和你需要的「纵向堆叠行、保留原有2列结构」的需求完全不匹配。
正确操作方法
两个待合并数据框列数、列名完全一致时,直接做行绑定即可,两种常用方案可选:
- 基础R原生方案(无需安装额外包):使用
rbind()完成行拼接,之后设置对应行名Q3 <- rbind(with.arthritis, withOUT.arthritis) rownames(Q3) <- c("with.arthritis", "withOUT.arthritis") - dplyr包方案(适合多表批量合并、列顺序可能不一致的场景):使用
bind_rows()合并,可直接生成数据来源标识,避免手动设置行名出错# 首次使用需先执行install.packages("dplyr")安装包 library(dplyr) Q3 <- bind_rows( `with.arthritis` = with.arthritis, `withOUT.arthritis` = withOUT.arthritis, .id = "group" ) # 如需把来源标识设为行名,追加执行以下代码 Q3 <- column_to_rownames(Q3, var = "group")
最终输出效果
执行代码后得到的表格共2行2列,完全符合预期:
mean_weight sd_weight with.arthritis 176.08 46.30651 withOUT.arthritis 183.04 49.81196
内容的提问来源于stack exchange,提问作者sfroehle
相关产品推荐
相关产品推荐

