Трубы, преобразовать числовые значения в коэффициенты с сохранением ненаблюдаемых уровней - PullRequest
0 голосов
/ 25 февраля 2019

В mtcars$gear наблюдаются только цифры 3, 4 и 5. Я хочу преобразовать это в коэффициент, в котором:

  • "Китай" = 1
  • "Франция" = 2
  • "Россия" = 3
  • "Великобритания" = 4
  • "США" = 5

Я хочузатем построить это так, чтобы мы увидели, что «Китай» и «Франция» имеют 0 значений.

Я хочу делать все через трубы.

mtcars %>% 
  mutate(gear = factor(gear, labels = list("China" = 1, "France" = 2, "Russia" = 3, "UK" = 4, "USA" = 5))) %>% 
  group_by(gear) %>% 
  summarize(Count = n()) %>%
  ggplot() +
  geom_col(aes(x = gear, y = Count))

"Error in mutate_impl(.data, dots) : 
   Evaluation error: invalid 'labels'; length 5 should be 1 or 3."

Это похоже на Изменение уровней факторов с помощью dplyr mutate , за исключением того, что я хочу включить ненаблюдаемые значения.

1 Ответ

0 голосов
/ 27 февраля 2019

Правильное использование уровней и меток, гарантируя, что ненаблюдаемые значения не будут удалены, решает проблему.Все кредиты: @joran и @ markus

mtcars %>% 
  mutate(gear = factor(gear, levels = 1:5, labels = c("China","France","Russia","UK","USA"))) %>% 
  ggplot() +
  geom_bar(aes(x = gear)) +
  scale_x_discrete(drop = FALSE)
...