我有一个具有不一致但重叠的变量的数据帧列表。一些共享变量具有相似但不相同的名称。我想有条件地重命名该变量,以使其在数据集中保持一致。一次做到这一点的方法是
library(tidyverse)
df_1 <- starwars
df_2 <- starwars %>% rename(haircolor = hair_color)
df_3 <- starwars
df_list <- list(df_1, df_2, df_3)
df_list[[2]] <- df_list[[2]] %>% rename(hair_color = haircolor)
但我想这是灵活的,这样我可以只给在任何大小的列表,它会重命名任何变量标题hair_color
为haircolor
。有没有一种方法可以purrr::map
对现有变量进行有条件的重命名?最基本的解释如下所示:
df_list %>%
purrr::map( ~ rename(., hair_color = haircolor))
我们可以通过一个select_helpers
函数来传递
library(dplyr)
library(purrr)
df_list %>%
purrr::map( ~ .x %>%
rename_at(vars(matches('hair_color')), ~ 'haircolor'))
或使用if/else
条件
df_list %>%
purrr::map( ~ if('hair_color' %in% names(.)) {
rename(., haircolor = hair_color)
} else .)
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句