【问题标题】:Merging data frames with different column names in R在R中合并具有不同列名的数据框
【发布时间】:2021-04-13 13:48:35
【问题描述】:

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

colnames(df1)=colnames(df2)

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

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

谢谢!!

【问题讨论】:

标签: r


【解决方案1】:

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

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)))

【讨论】:

  • 谢谢! full.names后面需要写什么?
  • @adiki 抱歉,修复了 full.names = TRUE,意思是获取文件的完整路径。
  • 谢谢!在将数据框绑定在一起之前,我需要按某个类别对它们中的每一个进行排序。如果我不能只写文件路径,我需要如何更改代码?
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2021-05-12
  • 2020-03-23
  • 1970-01-01
  • 2021-03-11
  • 1970-01-01
  • 1970-01-01
  • 2021-07-13
相关资源
最近更新 更多