r - 在R中合并具有不同列名的数据框
问题描述
我有 3 个具有相同列数的数据框,我想将它们绑定在一起(将它们按列相互叠加)。问题是这些数据框来自不同的来源,有些列略有不同,例如:df1- column A-dollar amount,df2- column A-dollar amount (USD),而 R 不知道它们是相同。我试过这个:
colnames(df1)=colnames(df2)
它有效,但问题是当我尝试导出合并文件时,每次列的名称都不同 - 有时是“美元金额”,有时是“美元金额(美元)”。
有什么可以自动完成的吗?我在这个数据框中有 40 多列。
谢谢!!
解决方案
假设列的顺序相同,但拼写不同。我们可以从第一个文件中获取列名,然后读取每个文件并更新列名,最后对它们进行行绑定,如下所示(未测试):
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)))
推荐阅读
- php - 如何使用 php codeigniter 发送电子邮件?
- javascript - 通过拖放交换 parentNode 中子元素的最简单方法
- php - 如何在PHP中的日期数组中从最近的日期到最远的日期对日期进行排序
- git - 如何将一个存储库的分支移动到不同存储库的另一个分支
- php - 是否可以通过php中的锚标记发送用户输入的关键字
- python - 亚马逊销售合作伙伴 API 提要使用 Python 加密文件
- python - 禁止消息 discord.py 上的命令
- reactjs - axios 调用数据返回 useState undefined
- javascript - 使用 Azure 函数从 Azure Blob 存储下载文件会返回不同的文件大小
- ssl - Gradle 未能构建应用程序 - 无法找到请求目标的有效认证路径