У меня есть следующий фрейм данных:
dataDF <- data.frame(
id = 1:5,
to_choose = c('red', 'blue', 'red', 'green', 'yellow'),
red_value = c(1,2,3,4,5),
blue_value = c(6,7,8,9,10),
yellow_value = c(11,12,13,14,15)
)
id to_choose red_value blue_value yellow_value
1 red 1 6 11
2 blue 2 7 12
3 red 3 8 13
4 green 4 9 14
5 yellow 5 10 15
Я хочу создать новый столбец value
, который является значением из соответствующего столбца на основе столбца to_choose.
Я мог бы сделать это с ifelse
следующим образом
mutate(dataDF,
value = ifelse(to_choose == 'red', red_value,
ifelse(to_choose == 'blue', blue_value,
ifelse(to_choose == 'yellow', yellow_value, NA))))
Чтобы дать
id to_choose red_value blue_value yellow_value value
1 red 1 6 11 1
2 blue 2 7 12 7
3 red 3 8 13 3
4 green 4 9 14 NA
5 yellow 5 10 15 15
Но если бы существовал более простой способ сделать это в одну строчку по
mutate(dataDF, value = paste(to_choose, 'value', sep = '_'))