Это мой первый вопрос здесь, поэтому я надеюсь, что он подходит для этого форума. Любые предложения о том, как улучшить вопрос или заголовок, будут очень признательны.
Данный
> experiment <- data.frame(old=factor(c("z","z","z","z","z"),levels=c("x","y","z")),
new=factor(c("y","z","x",NA,NA),levels=c("x","y","z")))
> experiment
old new
1 z y
2 z z
3 z x
4 z <NA>
5 z <NA>
Я хотел бы обновить старое с новым именно тогда, когда новое не NA. Команда
> experiment$old <- ifelse(is.na(experiment$new),experiment$old,experiment$new)
Кажется, это то, что я хочу, за исключением того, что я получаю целочисленное кодирование уровней R, а не сами метки:
> experiment
old new
1 2 y
2 3 z
3 1 x
4 3 <NA>
5 3 <NA>
Есть ли какой-то элементарный способ перевести целочисленное кодирование уровней R обратно в метки? я надеялся получить
> experiment
old new
1 y y
2 z z
3 x x
4 z <NA>
5 z <NA>
вместо этого в качестве вывода.
Большое спасибо.