首页 文章

使用第二个数据框重命名R中存在于dataframe [duplicate]中的列

提问于
浏览
0

这个问题在这里已有答案:

让我先创建一个例子,然后解释一下这个问题:

old_names <- c("FG%", "Dist.", "2P", "0-3", "3-10", "10-16")
new_names <- c("FG%", "Dist", "2P_Freq", "0_3_Freq", "3_10_Freq", "10_16_Freq")

dput(mydf)
structure(list(`FG%` = c(0.451, 0.454, 0.444, 0.444, 0.442), 
`2P` = c(0.691, 0.607, 0.629, 0.744, 0.665), `0-3` = c(0.331, 
0.296, 0.309, 0.28, 0.282), `10-16` = c(0.092, 0.071, 0.077, 
0.117, 0.099)), row.names = c(NA, 5L), class = "data.frame")

mydf
    FG%    2P   0-3 10-16
1 0.451 0.691 0.331 0.092
2 0.454 0.607 0.296 0.071
3 0.444 0.629 0.309 0.077
4 0.444 0.744 0.280 0.117
5 0.442 0.665 0.282 0.099

我的数据框 mydf 具有不同数量的列 . 我知道整个可能的当前列名称集 old_names ,当它们出现在数据帧中时,我想用 new_names 中相同索引处的值替换它们 . 在上面的示例中,存在6列中的4列,我需要将它们重命名为new_names值 .

使用dplyr重命名,rename_at,rename_if,rename_all中的一个或多个的解决方案将特别有用,因为我尝试尽可能多地使用dplyr来进行此类数据操作 . 我已经尝试了一些没有运气的尝试 .

任何有关这方面的帮助将不胜感激!

1 回答

  • 2

    这应该做到这一点

    names(mydf) = new_names[old_names %in% names(mydf)]
    

相关问题