У меня есть база данных, похожая на эту:
data <- tibble(X = c(1,2,3,4), X_2 = c(2,3,4,5),
Y = c(3,4,5,6), Y_2 = c(4,5,6,7))
Я хотел бы изменить X и Y, чтобы я мог суммировать X с X_2 и Y с Y_2, генерируя новые переменные с именами X_3 и Y_3.
Я пробовал что-то вроде этого:
data %>%
mutate(across(c(X,Y), ~ . + ._2 , .names = "{col}_3")) %>%
print()
или вот так:
data %>%
mutate(across(c(X,Y), ~ . + paste0(.,"_2") , .names = "{col}_3")) %>%
print()
Очевидно, ни один из них не работает, поскольку я не знаю, как определить вторую переменную, имеющую то же имя, что и имя, которое я использую в сквозной функции (но оканчивающееся суффиксом).
Может ли кто-нибудь помочь мне с этим?
Заранее спасибо!
Для достижения этой цели вы можете использовать функцию cur_column()
внутри across
для динамической ссылки на имена столбцов. Вот как вы можете это сделать:
Используйте mutate
и across
, чтобы создать новые переменные:
result <- data %>%
mutate(across(c(X, Y),
~ . + get(paste0(cur_column(), "_2")),
.names = "{col}_3"))
Добро пожаловать в ТАК! Это хороший первый ответ, но было бы еще лучше, если бы вы показали результат запуска вашего кода на тестовых данных OP: это станет доказательством его правильности.