问题与因子和重新排序facet_grid

时间:2019-07-16 07:53:10

标签: r ggplot2 dplyr r-factor facet-grid

我已经用数十年来与数据相关联的gss数据(https://gss.norc.org/)构建了一个数据集

env_data <- select(gss, year, sex, degree, natenvir) %>% na.omit()

env_datadecades <- env_data %>% 
                    mutate(decade=as.factor(ifelse(year<1980,
                                                   "70s", 
                                                    ifelse(year>1980 & year<=1990,
                                                           "80s", 
                                                            ifelse(year>1990 & year<2000, "90s", "00s")))))

我想用ggplot2facet_grid()绘制它,并且顺序不正确,所以我在其他地方看到它了

set.seed(6809)

env_datadecades$decade <- factor(env_datadecades$decade,
                                 levels = c("Seventies", "Eighties", "Nineties", "Twothous"))

这是第一次工作,但是当我再次尝试运行代码时,十年来所有数据我都得到NA。发生什么事了?

1 个答案:

答案 0 :(得分:1)

我只是做了一个简单的年份数据集

df <- data.frame(Years = sample(1970:2010, 20, replace = T))

通过这种方法将其转换为必需的因素,

df <- df %>%
  mutate(Decades = case_when(Years < 1980 ~ "Seventies",
                             1980 <= Years  & Years < 1990 ~ "Eighties",
                             1990 <= Years & Years < 2000 ~ "Nineties",
                             2000 <= Years ~ "TwoThousands"))
df$Decades <- factor(df$Decades, levels = c("Seventies", "Eighties", "Nineties", "TwoThousands"), ordered = T)

现在尝试刻面。

我认为您的代码的问题在于,当您首先将变量转换为因子时,为级别指定了一组名称,然后在代码的第二行中,为它们提供了另一组名称。坚持相同的设置,它应该可以工作