在R中合并两个行数不等的DataFrame并添加来源标识列
解决方案
首先要注意两个数据集的列名存在大小写差异,得先统一列名才能顺利合并,接着给每个数据集加上dataset标识列,最后完成合并即可。
方法一:基础R实现
# 统一df1和df2的列名(转为小写) colnames(df1) <- tolower(colnames(df1)) colnames(df2) <- tolower(colnames(df2)) # 给每个数据集添加dataset标识列 df1$dataset <- "df1" df2$dataset <- "df2" # 合并两个数据集,缺失的列自动填充NA merged_df <- rbind(df1, df2) # 查看结果 merged_df
方法二:用dplyr包实现(更简洁)
如果习惯用tidyverse工具,bind_rows能自动处理列名大小写和缺失列的问题:
library(dplyr) merged_df <- bind_rows( df1 %>% mutate(dataset = "df1"), df2 %>% mutate(dataset = "df2") ) # 查看结果 merged_df
结果说明
合并后的数据集里,来自df1的行在student_rank列会显示NA(因为df1没有这个列),dataset列清晰标记每条数据的来源,总行数为两个数据集行数之和(5+2=7行)。
内容的提问来源于stack exchange,提问作者Hellihansen
相关产品推荐
相关产品推荐

