我有相应月份的年度数据,带有“-”。例如:2010-1 = 2010年1月。
排序数据时,我得到以下结果:
2010-1
2010-11
2010-12
2010-2
但是,我想要以下订单:
2010-1
2010-2
...
2010-11
2010-12
答案 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]