如何排序年度数据?

时间:2019-03-09 16:50:49

标签: r sorting date time

我有相应月份的年度数据,带有“-”。例如:2010-1 = 2010年1月。

排序数据时,我得到以下结果:

2010-1

2010-11

2010-12

2010-2

但是,我想要以下订单:

2010-1

2010-2

...

2010-11

2010-12

2 个答案:

答案 0 :(得分:0)

在动物园中使用yearmon类。它内部将年/月表示为年+(月-1)/ 12,以便正确排序并在外部将其显示,如图所示。

library(zoo)
x <- c("2010 - 1", "2010 - 11", "2010 - 12", "2010 - 2")

ym <- as.yearmon(x, "%Y - %m")
sort(ym)

给予:

"Jan 2010" "Feb 2010" "Nov 2010" "Dec 2010"

答案 1 :(得分:0)

您也可以尝试:

df <- transform(df, Dates = format(as.Date(paste0(Dates, "-01"), "%Y-%m-%d"), "%Y-%m"))

df <- df[order(df$Dates), , drop = FALSE]

..其中Dates是您的列的名称,您可以将其替换为实际的列。

输出:

    Dates
1 2010-01
4 2010-02
2 2010-11
3 2010-12

使用的数据:

df <- structure(list(Dates = structure(1:4, .Label = c("2010-1", "2010-11", 
"2010-12", "2010-2"), class = "factor")), class = "data.frame", row.names = c(NA, 
-4L))

P.S。如果您的数据在格式(例如2010 - 1)内有实际空格,则可以执行以下操作:

df <- transform(df, Dates = format(as.Date(paste0(Dates, " - 01"), "%Y - %m - %d"), "%Y-%m"))

df <- df[order(df$Dates), , drop = FALSE]