【问题标题】:Problem with factor and reordering facet_grid因子和重新排序 facet_grid 的问题
【发布时间】:2019-07-16 07:53:10
【问题描述】:

我已经从 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 十年内的所有数据。发生了什么?

【问题讨论】:

  • 也许是factor(..., levels=..., ordered=TRUE)
  • 那行不通...
  • 如果没有可重现的示例,很难弄清楚这一点。但我看到的一件事是,在您的第二个代码 sn-p 中,您使用的是数据中不存在的级别。您是否尝试在第二个代码 sn-p 中使用 levels = c("70s", "80s", "90s","00s")
  • @ManuelaRipollésOrovitg:你得到了NA,因为你指定的关卡不存在。应该是labels = c("Seventies", "Eighties", "Nineties", "Twothous")和jludewig提到的levels
  • 谢谢你的问题是,是的!

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


【解决方案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)

现在尝试分面。

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

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-10-20
    相关资源
    最近更新 更多