【发布时间】:2020-09-11 16:06:22
【问题描述】:
我意识到我在上一篇文章中提出了两个不同的问题,其中一个非常聪明的窥视者很快就回答了其中一个问题。
显然,我仍然无法围绕数据框列表或 lapply!
我有原始问题和重命名问题的 csv 列表。在此示例中,我尝试编写代码以根据 Qs 数据帧将 Q.1a 更新为 Q.1。
df1 <- data.frame("ID" = 1, "Q.1" = 2, Q1.1 = 3)
df2 <- data.frame("ID." = 2, "Q.1a" = 3, Q1.1 = 4)
dflist <- lapply(ls(), function(x) if (class(get(x)) == "data.frame") get(x))
dflist <- Filter(length, dflist)
Qs <- data.frame("Original.Name" = "Q.1a", "New.Name" = "Q.1")
表格如下所示:我想根据 Qs 表格更新 Q.1a
ID Q.1a Q1.1
1 1 2 3
ID. Q.1 Q1.1
1 2 3 4
Original.Name New.name
1 Q.1a Q.1
我正在尝试编写的代码重命名当前充满错误的问题,我确信管道不应该存在!
lapply(dflist, function(x) {
names(x) <- names (x) %in%
Qs$Original.name = Qs$New.name[match(names(x)[names(x) %in% Qs$Original.name],
Qs$Original.name)]
})
谁能指出我正确的方向?非常感谢。
已编辑以显示预期输出,其中上面原始示例中的 Q1a 已更新到 Q1。
ID Q.1 Q1.1
1 1 2 3
ID. Q.1 Q1.1
1 2 3 4
理想情况下,我希望能够匹配和替换 Qs 表中的列名。将原来的列名替换为新的列名
【问题讨论】:
-
您的预期输出是什么?
dflist有列名ID Q1 Q11和ID Q1a Q11应该改成什么? -
啊,谢谢你的提问。真实数据很宽,有很多列。 CSV 具有原始列名和新列名。这张表是 Qs。在此示例中,df 中的原始问题 Q1a 需要为 Q1。
-
所以我想做的是在所有数据帧中编写一个匹配函数,将新列名与旧列名匹配并更新所有数据帧
-
我已编辑以更清楚地了解预期输出