Я хочу иметь возможность перекодировать Var1, чтобы иметь то же значение Var2 (если оно отличается). Обратите внимание, что я хочу сохранить значение Var1, если Var2 — NA. Любая помощь будет оценена по достоинству. Я не против иметь Var3 с тем же исходом.
Var1 <- c("A", "A", "D", "B","C", "A", "C","C", "A", "C")
Var2 <- c("A", "A", "A", "C","C", NA, NA,"C", "A", "C")
df <- data.frame(Var1, Var2)
Желаемый фрейм данных должен быть
Var1 <- c("A", "A", "A", "C","C", "A", "C","C", "A", "C")
Var2 <- c("A", "A", "A", "C","C", NA, NA,"C", "A", "C")
df <- data.frame(Var1, Var2)
Здесь работает простое утверждение if_else
:
library(dplyr)
df %>%
mutate(Var1 = if_else(is.na(Var2), Var1, Var2))
# Var1 Var2
# 1 A A
# 2 A A
# 3 A A
# 4 C C
# 5 C C
# 6 A <NA>
# 7 C <NA>
# 8 C C
# 9 A A
# 10 C C
df %>%
mutate(Var1 = coalesce(Var2, Var1))
Var1 Var2
1 A A
2 A A
3 A A
4 C C
5 C C
6 A <NA>
7 C <NA>
8 C C
9 A A
10 C C