tidyverse
решение: используйте separate
из tidyr
, чтобы разделить местоположения на :
на два столбца, один для страны и один для штата.Места, в которых нет разделителя двоеточий, получат NA
для штата, который можно заменить на что-то вроде «За пределами США».
Я переместил этот неамериканский уровень до конца, чтобы он появлялся последним в легенде, но это может не понадобиться для ваших целей.Затем установите заливку на основе состояния, чтобы вы могли видеть, как значения в США складываются по штатам.
Возможно, вы также захотите установить шкалу, которая придает неамериканским значениям приглушенный или серый цвет в отличие отсложенные, но я оставлю заботы о дизайне на ваше усмотрение.
library(tidyverse)
df <- data.frame(respondent = factor(c(1, 2, 3, 4, 5, 6, 7)), location = factor(c("US: California", "US: Oregon", "Mexico", "US: Texas", "Canada", "Mexico", "Canada")))
with_states <- df %>%
separate(location, into = c("Country", "State"), sep = ": ") %>%
replace_na(list(State = "Outside US")) %>%
mutate(State = as.factor(State) %>% fct_relevel("Outside US", after = Inf))
ggplot(with_states, aes(x = Country, y = 1, fill = State)) +
geom_col()
![](https://i.imgur.com/JasNANG.png)
Создано в 2018-05-24 с помощью пакета Представить (v0.2.0).