【问题标题】:Order of factor levels in termplottermplot 中因子水平的顺序
【发布时间】:2017-07-14 18:23:02
【问题描述】:

我想知道您是否可以重新排序 termplot 中的因子水平,因为它们目前按字母顺序排列,我要求它们按时间顺序排列。

这是我用来创建情节的代码:

termplot(model2, rug=TRUE, se=T, xlabs="Month/Year", ylabs="", ylim=c(-2,3), ask=F, col.term = 1, col.se = 1, use.factor.levels=TRUE)

这会产生下面的情节:

所以我想重新排序,以便首先是 2015 年 7 月/8 月,然后是 2015 年 9 月/10 月,然后是 2016 年 4 月。

我知道你可以在 ggplot 中相当简单地做到这一点,但在 termplot 中找不到任何方法。

有没有办法做到这一点?

【问题讨论】:

  • 抱歉,它不会让我上传情节,因为我是 stackoverflow 的新手并且没有足够的“声誉点”
  • 谢谢,但是这种方法不适用于 termplot,因为它是从 GAM 的输出中工作的,因此已经从这里设置了级别。

标签: r gam


【解决方案1】:

您需要将“月年”字符表示转换为“日期”类的对象。但是,为了做到这一点,您需要根据您当前的语言环境整理您的数据。在美国英语语言环境中(您可以通过在控制台中输入 Sys.getlocale("LC_TIME") 来检查您的语言环境的时间方面),这些是您需要采取的一些步骤:

首先,正确的月份名称及其缩写为:一月(Jan)、二月(Feb)、三月(Mar)、四月(Apr)、五月(May)、六月(Jun)、七月(Jul) ,八月(八月),九月(九月),十月(十月),十一月(十一月),十二月(十二月)。在您的数据中,“Sept”应该是“Sep”,这可能会导致转换时出错。

其次,为了通过基础 R 将字符表示转换为“日期”对象,必须提供年、月和日。然而,这可以通过下面建议的代码来解决。

第三,您的数据也违反了“年-月-日”格式,连接了两个月,例如“2015 年 7 月/8 月”。基本 R 中用于操作日期转换的函数将不接受这种格式。

总而言之,您首先需要整理数据,使其成为可接受的格式,然后才能生成您想要的绘图。下面我提供的代码展示了如何在可接受的字符表示和表示日历日期的“Date”类对象之间进行转换。

# Set the locale if your current differs from below
Sys.setlocale(category = "LC_TIME", locale = "en_US.UTF-8")

# Convert from character to class "Date"
m <- as.Date(x = paste(c("April 2016", "Jul 2015", "Sep 2015", "March 2017"), "01", sep = " "), format = "%B %Y %d")

如果你提供你的数据集,我可以给你更详细的帮助。

【讨论】:

  • 您的解决方案效果很好,非常感谢您的帮助。
  • 要将答案标记为已接受,请单击答案旁边的复选标记以将其从灰色切换为已填充。
猜你喜欢
  • 2018-12-07
  • 1970-01-01
  • 2014-09-29
  • 2017-01-02
  • 1970-01-01
  • 2017-07-12
  • 1970-01-01
  • 2016-04-19
  • 1970-01-01
相关资源
最近更新 更多