Добавление пробела к значениям столбцов и фильтрация в ggplot с помощью gsub - PullRequest
0 голосов
/ 04 мая 2020

Уважаемые участники сообщества R,

Я чистил грязный текстовый файл, содержащий более миллиона наблюдений. Я пытался решить эту проблему несколько раз, но у меня это не сработало.

Проблема: у меня есть столбец коэффициента с именем Travelmode с предопределенными категориями следующим образом:

Travelmode 
1
2
3
4
5

1 представляет автомобиль, 2 представляет междугородний автобус, 3 представляет городской автобус, 4 представляет городской рельс, а 5 представляет сообщество автобус, и этот список можно продолжить на ....... Я хочу заменить все вхождения 1 на автомобиль, все вхождения 2 на междугородний автобус, 3 на городской автобус, 4 с городской железной дорогой и 5 с шиной сообщества.

Чтобы изменить исходные значения столбца, я попытался использовать gsub безрезультатно.

df$Travelmode <- gsub("3", "Metropolitan bus", df$Travelmode)

Я хочу сохранить пространство между Metropolitan и автобусом, таким как Metropolitan Bus, а не Metropolitanbus, Blue bus, а не Bluebus и так далее. Эти значения должны отображаться под моими графиками скрипки и коробки для ясности, когда я фильтрую следующим образом:

df %>%
  filter(Travelmode %in% c ("Walk","Driver", "Blue bus", "Subway", "Metropolitan bus", "Bicycle", "Urban rail", "Express bus",
                            "Car","Metropolitan bus","Inter city bus" ),
         trippurpose %in% c ("School", "Commute","Shopping","Leisure", "Business"),
         between(df$commutetime2016, 0 , 60)) %>%
  ggplot(aes(x = Travelmode, 
             y = commutetime2016)) +
  geom_violin(fill = "cornflowerblue") +
  geom_boxplot(width = .2, 
               fill = "orange",
               outlier.color = "orange",
               outlier.size = 2) + 
  labs(y = "Travel time (Minutes)", x ="Trip Purpose",title = "Travel time distribution by Mode in 2016")+
  theme_minimal(base_size = 14) +
  ylim(0, 90)

Заранее спасибо !!

1 Ответ

0 голосов
/ 04 мая 2020

Я до сих пор не знаю, правильно ли я понимаю, но я думаю, что вы просто хотите заменить некоторые значения на правильные (Blue Bus вместо Bluebus)

Если это так, вы можете просто использовать mutate, чтобы сделать это, скомбинировав его с case_when

df %>% 
    mutate(Travelmode = case_when(
        Travelmode == "Bluebus" ~ "Blue Bus",
        Travelmode == "Metropolitan Bus" ~ "Metropolitan Bus",
        TRUE ~ Travelmode
    )) %>%
... 

Если ваши исходные имена столбцов 1,2,3, et c ..., тогда просто сделайте

df %>% 
    mutate(Travelmode = case_when(
        ORIGINAL_NAME == 1 ~ "Blue Bus",
        ORIGINAL_NAME == 2 ~ "Metropolitan Bus"
    )) %>%
... 
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...