[英]Sort year-month column by year AND month
我正在嘗試訂購存儲在數據框中的一系列時間數據。 格式如下:
"%Y-%b"
看起來像"2009-Sep"
等。
到目前為止,我已經設法找到了這種方法:
ds[order(as.Date(ds$yearmonth, format = "%Y-%b")),]
但它只按年份排序,然后按月份的字母順序排列,給我一個2009-Jan
、 2009-Jul
、 2009-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.