Допустим, у меня есть фрейм данных с около 150 переменными, которые мне нужно изменить их имена, на основе отдельного файла CSV («индекс»). Порядок переменных различается между фреймом данных и индексом, и, что еще хуже, есть некоторые переменные, которые могут отсутствовать в индексе и наоборот.
Существует ли элегантный способ или пакет, который можете помочь мне сделать это?
Вот пример данных, с которыми я имею дело.
library(dplyr)
library(tibble)
##My original data frame
orig <- tribble(
~item, ~protein, ~carbohydrates, ~total_fat, ~energy, ~zinc,
1, 5.4, 10.6, 7.3, 90, 3.4,
2, 10.3, 11.6, 3.3, 10, 2.1,
3, 8.4, 10.6, 2.3, 52, 0.2,
4, 2.7, 8.6, 20.3, 356, 1.3)
##New names index
csv_nm <- tribble(
~new_name, ~old_name,
"nut203", "protein",
"nut204", "total_fat",
"nut205", "carbohydrates",
"nut208", "energy",
"nut303", "iron")
Я пытался использовать векторы, как любезно предложено Питером:
## create a named vector to use with dplyr::rename
nm_vec <- csv_nm$old_name
names(nm_vec) <- csv_nm$new_name
## rename, subsetting the named vector to exclude names which are not present in the dataframe
tib_new_names <-
orig %>%
rename(nm_vec[nm_vec %in% names(orig)])
Но получил ошибку "Все аргументы должны быть названы".