Я обрабатываю данные опроса. Некоторые из вопросов просят участников проверить все варианты, которые относятся к ним. В кадре данных, который у меня есть на данный момент, есть столбец для каждого из возможных ответов со значением 1, записанным, если участник выбрал эту опцию. Например, для вопроса «Какие из следующих эмоций вы испытали на работе?», С опциями «Скука», «Стресс», «Контент», мой фрейм данных будет выглядеть так:
df <- data.frame(
id = seq(1,3,1),
boredom = c(NA, 1, NA),
stress = c(1, 1, 1),
contentment = c(NA, NA, NA)
)
Я хочу обновить любые значения ячеек, равные 1, с именем столбца, чтобы у меня был кадр данных, который выглядит следующим образом:
df2 <- data.frame(
id = seq(1,3,1),
boredom = c(NA, 'boredom', NA),
stress = rep('stress', 3),
contentment = rep(NA, 3)
)
Затем я могу использовать dplyr :: unite для создания столбца, в котором хранятся все эмоции, о которых сообщают участники, в одном столбце.
Мой интуитивный подход заключается в использовании mutate_at и ifelse (), но я не знаю, как ссылаться на имя столбца в вызове ifelse (). Например, я хочу написать что-то вроде этого:
df_updated <- df %>%
mutate_at(vars(boredom:stress), funs(ifelse(. == 1, 'relevant column name', .)))
Я надеюсь, что кто-нибудь подскажет, как получить доступ к имени столбца в вызове ifelse (). Или, если я лаю не на том дереве, руководство по другому подходу также очень приветствуется.