簡體   English   中英

按年和月對年月列進行排序

[英]Sort year-month column by year AND month

我正在嘗試訂購存儲在數據框中的一系列時間數據。 格式如下:

"%Y-%b"

看起來像"2009-Sep"等。

到目前為止,我已經設法找到了這種方法:

ds[order(as.Date(ds$yearmonth, format = "%Y-%b")),]

但它只按年份排序,然后按月份的字母順序排列,給我一個2009-Jan2009-Jul2009-Jun等的順序。我很困惑這不是一個容易解決的問題。

請幫忙...

最佳卡斯帕

zoo 中as.yearmon()函數(和"yearmon"類)專為此類數據而設計:

dat <- c("2009-Sep","2009-Feb","2009-Jan")
require(zoo)
d2 <- as.yearmon(dat, "%Y-%b")
> sort(d2)
[1] "Jan 2009" "Feb 2009" "Sep 2009"
> order(d2)
[1] 3 2 1
> d2[order(d2)]
[1] "Jan 2009" "Feb 2009" "Sep 2009"

您當然可以將paste0()一天粘貼到每個日期並通過as.Date()強制將"Date"類設為"Date" ,但as.yearmon()對我來說似乎更自然:

> as.Date(paste0(dat, "-01"), "%Y-%b-%d")
[1] "2009-09-01" "2009-02-01" "2009-01-01"

請注意,您可以通過生成的脅迫相同的結果"yearmon"對象類"as.Date" ,如:

> as.Date(d2)
[1] "2009-09-01" "2009-02-01" "2009-01-01"

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM