Я пытаюсь использовать dplyr для изменения (или mutate_if?) Column2 кадра данных на основе содержимого столбца 1.
ID TEST PREF
11 true blue
23 false red
4 false yellow
Если test == "false", я хочу изменить PREF= "апельсин".В противном случае не изменяйте PREF.
ID TEST PREF
11 true blue
23 false orange
4 false orange
Я думал, что ifelse-заявление может сработать, но не могу понять, как заставить другие ничего не делать.Кажется, он возвращает номер столбца вместо содержимого в этой строке.
df <- data.frame(ID = c("11", "23", "4"),
TEST = factor(c("true", "false", "false")),
PREF = factor(c("blue", "red", "yellow")))
df <- df %>%
mutate(PREF = ifelse(TEST == "false", "orange", PREF))
Мне кажется, что mutate_if должен быть уместным, но я не думаю, что хорошо понимаю его функцию и не могу найти какой-либопримеры похожие на то, что мне нужно.Что-то вроде:
df <- df %>%
mutate_if(TEST == "true", PREF = "orange")
Может кто-нибудь дать мне несколько советов?Спасибо!
Редактировать:
Я понял, что в моем утверждении ifelse оно возвращало уровень фактора, а не символы, которые я хотел.Это работает именно так, как я и надеялся, указав as.character.
df2 <- df %>%
mutate(PREF = factor(ifelse(TEST == "false", "white", as.character(PREF))))