r - 如何将一个 df 的 colnames 与另一个 df 中找到的值匹配 - 如果找到,用更多值重命名这些 cols?
问题描述
我有一个“main_df”,其中每个 colname 都包含一个 unqiue url 代码:
main_df <- tibble("eW1BRoUDV4BKQMl" = c("word", "word", "word", "word", "word"),
"5zKTGwHlwlzpssB" = c("word", "word", "word", "word", "word"),
"55SVfoQudZJNCFT" = c("word", "word", "word", "word", "word"),
"bOORR1zuKYSnAe9" = c("word", "word", "word", "word", "word"),
"6RrOQfDZim81pHv" = c("word", "word", "word", "word", "word"))
# A tibble: 5 x 5
eW1BRoUDV4BKQMl `5zKTGwHlwlzpssB` `55SVfoQudZJNCFT` bOORR1zuKYSnAe9 `6RrOQfDZim81pHv`
<chr> <chr> <chr> <chr> <chr>
1 word word word word word
2 word word word word word
3 word word word word word
4 word word word word word
5 word word word word word
我还有第二个“reference_df”,它也包含相同的唯一网址,以及它们相应的合理“项目”名称:
reference_df <- tibble(item = c("ashtray", "bell", "blouse", "boot", "bottle"),
url = c("eW1BRoUDV4BKQMl", "5zKTGwHlwlzpssB", "55SVfoQudZJNCFT", "bOORR1zuKYSnAe9", "6RrOQfDZim81pHv"))
# A tibble: 5 x 2
item url
<chr> <chr>
1 ashtray eW1BRoUDV4BKQMl
2 bell 5zKTGwHlwlzpssB
3 blouse 55SVfoQudZJNCFT
4 boot bOORR1zuKYSnAe9
5 bottle 6RrOQfDZim81pHv
我需要将“main_df”的列名与“reference_df$url”中的值匹配,如果找到,将“main_df”的列名替换为“reference_df$item”。因此,我的“main_df”的期望输出将是:
# A tibble: 5 x 5
ashtray bell blouse boot bottle
<chr> <chr> <chr> <chr> <chr>
1 word word word word word
2 word word word word word
3 word word word word word
4 word word word word word
5 word word word word word
我可能可以用 for 循环来做到这一点,但我想知道是否有办法解决这个问题。一个 tidyverse 解决方案会更可取 - 我很确定我应该使用 apply 或 map_df(),但我就是想不通。
任何帮助将非常感激!
解决方案
我们可以使用ofmatch
的列名称并更改 的名称。main_df
url
reference_df
main_df
names(main_df) <- reference_df$item[match(names(main_df), reference_df$url)]
# ashtray bell blouse boot bottle
# <chr> <chr> <chr> <chr> <chr>
#1 word word word word word
#2 word word word word word
#3 word word word word word
#4 word word word word word
#5 word word word word word
一种dplyr
方法是根据url
inreference_df
和重命名来排列列。
library(dplyr)
main_df %>% select(reference_df$url) %>% rename_all(~reference_df$item)
推荐阅读
- java - java 在 Netbeans 中回答 exec-maven-plugin:1.2.1
- php - 使用 php 从对象 json 读取数据
- python - KivyMD 对话框未调整其小部件的大小
- visual-studio-2019 - 打开任何 Razor 页面后 VS2019 崩溃;“由于内部错误,Razor Taghelper 提供程序当前不可用”
- javascript - 对象为空时如何阻止useSelector触发?
- r - 基于R中数据框中行名中的相同文本创建阶乘列
- powerbi - 使用动态表名称引用变量表 - Power BI、DAX
- java - 如何仅从 java/kotlin 数据类生成 openapi 模式?(对于基于 vert.x 的应用程序)
- c# - LDAP 查询 AD 林信任中的跨域
- material-ui - Material-UI/app-bar/#back-to-top-findDOMNode 在 StrictMode 中已弃用。findDOMNode 被传递了一个在 StrictMode 内的 Transition 实例