r - 使用第二个数据框重命名数据框中存在的 R 中的列
问题描述
让我先创建一个示例,然后解释问题:
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、rename_at、rename_if、rename_all 的解决方案将特别有用,因为我尝试尽可能多地使用 dplyr 来处理这种类型的数据操作。我已经尝试了一些尝试,但没有运气。
对此的任何帮助将不胜感激!
解决方案
这应该这样做
names(mydf) = new_names[old_names %in% names(mydf)]
推荐阅读
- scala - Scala Future:将 Future[Vector[T]] 转换为 Future[Result]
- android - 在我运行应用程序时询问权限后打开空白页面。但是当我调试时一切正常。这是为什么
- python - 在 WSL 中安装 pip 时遇到问题
- r - 使用 geosphere::distm 计算的两点之间的距离与使用小册子绘制的距离不同
- c# - Aspose 将 Excel 转换为 HTML - htmlAgilePack
- oracle - 文字与 12c Oracle 中的格式字符串不匹配
- bash - 通过 cron 调用的 at 作业问题(Ubuntu)
- azure - 多租户应用程序的 Azure AD 重定向 URI
- javascript - 如何使用主题中的颜色
- r - 当 id 有一些符号或者它们有小写或大写时如何匹配数据