如何合并R中三个data.frame并将原对象名称设为第一列?
这里有两种简单的方法可以实现你的需求,核心思路是先给每个数据框添加标识其来源的列,再将它们行合并:
方法一:Base R 原生实现
先手动为每个data.frame添加来源名称列,再用rbind()合并,最后调整列顺序把来源列放到第一位置:
# 为每个数据框添加来源标识列 V$source <- "V" PC$source <- "PC" IF$source <- "IF" # 合并三个数据框 combined_df <- rbind(V, PC, IF) # 将source列移至第一列 combined_df <- combined_df[, c("source", setdiff(colnames(combined_df), "source"))]
方法二:使用 tidyverse 工具(更简洁)
借助dplyr的bind_rows()和tibble的lst(),可以一步完成收集和合并,自动保留原对象名称:
library(dplyr) # lst()会以对象名作为列表元素的名称,bind_rows的.id参数将其转为source列 combined_df <- bind_rows(lst(V, PC, IF), .id = "source")
运行上述代码后,combined_df的第一列就是source,对应原对象的名称V、PC、IF,后续列则是原数据框的所有统计量。
内容的提问来源于stack exchange,提问作者Rustam
相关产品推荐
相关产品推荐

