Я пытаюсь автоматизировать процесс, чтобы завершить пропущенные значения в последовательности переменных, используя оператор ifelse и функцию mutate_all. Проблема включает в себя фрейм данных со многими именами переменных, например, ax1, bx1, ... zx1, ax2, bx2, ... zx2, ax3, bx3, ... zx3. Следующие данные дают небольшой сценарий:
df<-data.frame(
"id" = c(1:5),
"ax1" = c(1, "NA", 8, "NA", 17),
"bx1" = c(2, 7, "NA", 11, 12),
"ax2" = c(2, 1, 8, 15, 17),
"bx2" = c(2, 6, 4, 13, 11))
Процесс состоит в том, чтобы заменить отсутствующие значения переменных на конец «x1» их соответствующими значениями переменных на конец «x2». То есть, если отсутствует ax1, он заменяется на ax2, а любое отсутствие на bx1 заменяется на bx2 и так далее. Поскольку есть много переменных, чем сценарий, представленный здесь, я ищу способ автоматизировать этот процесс. Я пробовал следующие коды
library(dplyr)
df <- df %>%
mutate_all(vars(ends_with("x1", "x2")), function(x,y)
ifelse(is.na(x), y, x)))
, но это не работает. Я очень ценю любую помощь в этом. Ожидаемый результат -
id ax1 bx1 ax2 bx2
1 1 2 2 2
2 1 7 1 6
3 8 4 8 4
4 15 11 15 13
5 17 12 17 11