首页 > 解决方案 > 在R中合并具有不同列名的数据框

问题描述

我有 3 个具有相同列数的数据框,我想将它们绑定在一起(将它们按列相互叠加)。问题是这些数据框来自不同的来源,有些列略有不同,例如:df1- column A-dollar amount,df2- column A-dollar amount (USD),而 R 不知道它们是相同。我试过这个:

colnames(df1)=colnames(df2)

它有效,但问题是当我尝试导出合并文件时,每次列的名称都不同 - 有时是“美元金额”,有时是“美元金额(美元)”。

有什么可以自动完成的吗?我在这个数据框中有 40 多列。

谢谢!!

标签: r

解决方案


假设列的顺序相同,但拼写不同。我们可以从第一个文件中获取列名,然后读取每个文件并更新列名,最后它们进行行绑定,如下所示(未测试):

library(data.table)

# get list of files
myFiles <- list.files(path = "some/folder", pattern = "*.txt", full.names = TRUE)

# get column name from first file
mycols <- colnames(fread(myFiles[ 1 ]))

# loop, read all, with the same column names, then bind the list of dataframes
myData <- rbindlist(lapply(myFiles, function(i) fread(i, col.names = mycols)))

推荐阅读