r - 如何根据R中的字典在多个数据框中重命名具有不同列名和不同顺序的多个列
问题描述
我正在合并来自不同来源的多个数据集。每个数据集的列名(作为 datframes)具有不同的名称和不同的顺序。我创建了一个字典,其中包含所有不同的名称和我想要重命名原始名称的通用名称。如何使用 R 中的字典重命名原始列名?我特别想使用字典,因为将来我可能会添加更多数据集(具有不同的列名),并且很容易适应字典。
我知道我可以手动重命名每一列,但是有很多(比如 30 个),并且它们可能会随着新数据集的添加而改变。
df1 <- data.frame(site = c(1:6), code = c(rep("A",3), rep("B", 3)), result = c(20:25))
df2 <- data.frame(site_no = c(10:19), day = c(1:10), test = c(rep("A", 5), rep("B", 5)), value = c(1:10))
dict <- data.frame(oldName = c("site", "code", "result", "site_no", "day", "test", "value"), newName = c("site_number", "parameter", "result", "site_number", "day", "parameter", "result"))
我想根据 dict 数据框重命名 df1 和 df2 中的列,其中包含旧名称(来自 df1 和 df2 的所有列名称)和新名称(要使用的常用名称)。
结果将是:
colnames(df1)
"site_number" "parameter" "result"
colnames(df2)
"site_number" "day" "parameter" "result"
解决方案
我们可以match
将各自的名称与旧名称df
对应,然后在匹配的索引处提取新名称:
names(df1) = with(dict,newName[match(names(df1),oldName)])
names(df2) = with(dict,newName[match(names(df2),oldName)])
print(df1)
print(df2)
推荐阅读
- git - 有什么方法可以从 `index` 和 `objects` 恢复 git 提交(或完整的 repo)?
- rest - 在未经身份验证的情况下使用 SPA 时保护 REST API 的使用
- python-3.x - 在python tkinter中恢复画布上已删除的图片
- c - 如何为C中的字符串分配动态内存区域
- powershell - 如何将 RTF 文档转换为 docx
- linux - 即使在 `sort` 之后,`uniq` 仍然重复一些值
- c# - Passing parameters from textboxes to sql statement string - single quotes (') killing me
- php - 将数据插入数据库laravel
- google-cloud-platform - 如何将 Airflow 与 IA 平台连接?
- python - 如何通过添加自定义部分和符号来编辑 ELF