【发布时间】:2017-12-25 00:43:27
【问题描述】:
我有一批包含许多变量的数据集。我需要将每个数据集中的一些变量重命名为一个通用名称,而不更改其他变量。一个问题是我要重命名的每一列在每个数据集中位于不同的位置,并且每个数据集都有不同数量的列。示例数据和代码如下。
工作数据:
package(tidyverse)
df1 <- tribble(
~var1, ~var2, ~var3, ~var4, ~var5,
"1", "1", "1", "a", "d",
"2", "2", "2", "b", "e",
"3", "3", "3", "c", "f"
)
df2 <- tribble(
~var1, ~help, ~var3,
"1", "1", "1",
"2", "2", "2",
"3", "3", "3"
)
df3 <- tribble(
~var1, ~newCol, ~var3, ~help, ~var5, ~var6,
"1", "4", "1", "a", "d", "1",
"2", "5", "2", "b", "e", "2",
"3", "6", "3", "c", "f", "3"
)
我想将help 重新编码为var2,因此它在数据集中很常见。我知道我可以像这样使用dplyr 单独完成:
df2 <- df2 %>%
rename(var2 = help)
df3 <- df3 %>%
rename(var2 = help)
但我必须跨 100 多个数据集执行此操作,并且我希望更有效地执行此操作。我以this 帖子中的建议答案为例,但它仅适用于具有相同列数和列顺序的数据集,而我的则不然。我确实尝试过,但它没有用:
dfs <- list(df2$help = df2$help, df3$help = df3$help)
colnames <- c("var2", "var2")
list2env(lapply(dfs, setNames, colnames), .GlobalEnv)
但我在dfs <- list(df2$help = df2$help... 命令中收到以下错误:
Error: unexpected '=' in "dfs <- list(df2$help ="
我能找到的所有示例都没有显示如何跨数据集更改特定列,仅显示如何更改所有列名或只有几列的数据集中的change a small number of columns。
【问题讨论】:
标签: r