У меня есть датафрейм со старыми и новыми значениями. Мне нужно обновить новые значения, если что-то изменилось. Я думаю, что я действительно близко, но я не могу найти недостающую часть , используя tidyverse . С базой R - с использованием цикла for - это работает, но я не хочу создавать новые объекты или перезаписывать существующий.
data <- tribble(~id, ~firstname, ~lastname, ~old_firstname, ~old_lastname,
1, NA, NA, "Peter", "Busch",
2, NA, "Trochen-Pflaume", "Hans", "Trocken")
data%>%
mutate_at(vars(firstname, lastname), ~case_when(
is.na(.) & !is.na(str_c("old_",.)) ~ str_c("old_", .)),
!is.na(.) & . != str_c("old_",.) ~ .)
По сути, единственное, что нужно проверить - это новое значениепусто, тогда старое значение должно быть принято. В результате планируются более сложные запросы case_when. Но я не могу манипулировать именем столбца в функции mutate_at.
Что я хочу, но это зависит от case_when:
tribble(~id, ~firstname, ~lastname, ~old_firstname, ~old_lastname,
1, "Peter", "Busch", "Peter", "Busch",
2,"Hans", "Trochen-Pflaume", "Hans", "Trocken")
Спасибо за помощь!