如何按R中的年份和月份排序(使用动物园包中的as.yearmon)

时间:2012-09-25 21:10:13

标签: r sorting zoo

我正在尝试使用年份和月份信息对矢量进行排序。我从Date类型变量获得年份和月份。这是我想要完成的一个例子:

example <- as.Date(c("2010-04-22", "2010-04-26", "2010-04-26",
  "2010-06-04", "2010-06-07", "2010-06-18", "2010-06-21",
  "2010-07-14", "2010-07-16", "2010-07-30", "2010-08-20"))

mes_ano <- as.character(as.yearmon(as.Date(example)))

mes_ano <- factor(mes_ano, levels = c(unique(mes_ano),
 "mai 2010", "set 2010", "out 2010", "nov 2010"))

现在我想按年份和月份排序mes_ano,但我不知道如何。

实际上,我的真正目标是对关卡进行排序,因为我将用ggplot2制作一个情节,我需要对关卡进行排序。但我认为,如果我只是询问有关矢量的排序,它会让我们的生活更轻松。然后我可以弄清楚如何排序水平。

1 个答案:

答案 0 :(得分:1)

我想你想使用Potuguese月名。我们走吧:

您的数据:

example <- as.Date(c("2010-04-22", "2010-04-26", "2010-04-26",
                     "2010-06-04", "2010-06-07", "2010-06-18", "2010-06-21",
                     "2010-07-14", "2010-07-16", "2010-07-30", "2010-08-20"))

我们需要一个带有这些名称的向量:

port_mon <- c("jan", "fev", "mar", "abr", "mai", "jun",
              "jul", "ago", "set", "out", "nov", "dez")

现在,对数据进行排序:

ex_sorted <- sort(example)

用葡萄牙语选择正确的月份名称:

month_names <- port_mon[as.numeric(format(ex_sorted, "%m"))]

结合数月和数年:

mes_ano <- paste(month_names, format(ex_sorted, "%Y"))

创建因素:

mes_ano_fac <- factor(as.yearmon(ex_sorted), labels = unique(mes_ano)) 

绘图(为了便于说明,在y轴上使用无意义的数据):

library(ggplot)

qplot(x = mes_ano_fac, y = seq(length(example)))

enter image description here