gpt4 book ai didi

r - 使用 dplyr 的 rename() 包括不在数据集中的变量名称

转载 作者:行者123 更新时间:2023-12-02 22:36:04 27 4
gpt4 key购买 nike

我正在尝试将一些 plyr 代码转换为 dplyr,但遇到了 dplyr 中 rename() 的新功能。我希望能够对一组原始名称重叠但不相同的数据集重用单个 rename() 表达式。例如,

sample1 <- data.frame(A=1:10, B=letters[1:10])

sample2 <- data.frame(B=11:20, C=letters[11:20])

然后,

 rename(sample1, var1 = A, var2 = B, var3 = C)

我希望结果是变量 A 重命名为 var1,B 重命名为 var2,在这种情况下不添加 var3。相反,我得到

错误:未知变量:C。

相比之下,plyr 语法可以让我使用

rename(sample1, c("A" = "var1", "B" = "var2", "C" = "var3"))
rename(sample2, c("A" = "var1", "B" = "var2", "C" = "var3"))

并且不会抛出错误。有没有办法在 dplyr 中获得相同的结果而不出现未知变量错误?

最佳答案

完全忽略您对如何使用 dplyr 执行此操作的实际请求,我想建议使用查找表的不同方法:

sample1 <- data.frame(A=1:10, B=letters[1:10])
sample2 <- data.frame(B=11:20, C=letters[11:20])

rename_map <- c("A"="var1",
"B"="var2",
"C"="var3")

names(sample1) <- rename_map[names(sample1)]
str(sample1)

names(sample2) <- rename_map[names(sample2)]
str(sample2)

从根本上来说,该算法很简单:

  1. 构建当前变量名称与所需名称的查找表
  2. 使用 names() 函数,使用映射索引查找映射,并将这些映射变量分配给适当的列。

编辑:根据哈德利的建议,我使用命名向量而不是列表,使生活变得更轻松。我总是忘记命名向量:(

关于r - 使用 dplyr 的 rename() 包括不在数据集中的变量名称,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28709454/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com