Рассмотрим следующий примерdplyr: как (сжато) использовать мутате условно для разных случаев?
data <- data_frame(name = c('A','B','C','C',NA,'D'))
> data
# A tibble: 6 × 1
name
<chr>
1 A
2 B
3 C
4 C
5 <NA>
6 D
Вот, я знаю, что переменная name
фактически отображает на 'A' -> 'one'
и 'B' -> 'two'
. Я просто хотел бы создать переменную, которая получает значение отображения. Конечно, в моем исходном наборе данных у меня есть еще много случаев для сопоставления.
Что-то, что не Работа следующая.
data <- data %>%
mutate(mapping = ifelse(name == 'A', 'one', name),
mapping = ifelse(name == 'B', 'two', name))
> data
# A tibble: 6 × 2
name mapping
<chr> <chr>
1 A A
2 B two
3 C C
4 C C
5 <NA> <NA>
6 D D
Что здесь не так? Каков наиболее эффективный способ сделать это в dplyr
?
Большое спасибо!
Я думаю, что выражения ifelse должны быть ifelse (имя == 'A', 'one', name). В настоящий момент ifelse ищет переменную с именем mapping в вашем фрейме данных, и она еще не существует. – gfgm
спасибо, но это все еще не работает должным образом. –
Вы можете вставлять операторы ifelse, если вам придется жестко кодировать все значения отображения. то есть 'ifelse (name == 'A', 'one', ifelse (name == 'B', 'two', ....)) – Craig