因子和重新排序的问题 facet_grid

Problem with factor and reordering 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。发生了什么事?

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

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)

现在尝试刻面。

我认为你的代码的问题在于,当你第一次将变量转换为一个因子时,你给了水平一组名称,然后在第二行代码中,你给了它们另一组名称。坚持同一套,应该可以的