Я хотел бы использовать функцию dplyr mutate_at
чтобы применить функцию к нескольким столбцам в кадре данных, где функция вводит столбец, к которому она применяется, а также другой столбец в кадре данных.
В качестве конкретного примера, я бы посмотрел, чтобы изменить следующий фрейм данных
# Example input dataframe
df <- data.frame(
x = c(TRUE, TRUE, FALSE),
y = c("Hello", "Hola", "Ciao"),
z = c("World", "ao", "HaOlam")
)
с вызовом mutate_at
который выглядит примерно так
df %>%
mutate_at(.vars = vars(y, z),
.funs = ifelse(x, ., NA))
вернуть фрейм данных, который выглядит примерно так
# Desired output dataframe
df2 <- data.frame(x = c(TRUE, TRUE, FALSE),
y_1 = c("Hello", "Hola", NA),
z_1 = c("World", "ao", NA))
Требуемый вызов mutate_at
будет похож на следующий вызов mutate
:
df %>%
mutate(y_1 = ifelse(x, y, NA),
z_1 = ifelse(x, z, NA))
Я знаю, что это может быть сделано в базе R несколькими способами, но я бы специально хотел достичь этой цели, используя функцию dplyr mutate_at
для удобства чтения, взаимодействия с базами данных и т.д.
Ниже приведены некоторые аналогичные вопросы, задаваемые в stackoverflow, которые не относятся к вопросу, который я поставил здесь:
добавление нескольких столбцов в вызов dplyr mutate
dplyr :: mutate для добавления нескольких значений
Использование столбца внутри функции sum() с использованием функции dplyr mutate()