我有一个data.frame d,其日期列的格式为d $ date [1] =“01-Jan-09”,直到d $ date [1825] =“31-Dec-13”。当我使用命令对其进行排序时,
d[order(as.Date(d$date,format="%d%b%y")),]
它按照时间顺序正确排序,但是我希望它可以忽略这些年来排序。
我想要的是“09年1月1日”,“01年1月1日”,“01年1月1日”,......,“31-Dec-11”, “31-Dec-12”,最后是“31-Dec-13”。
是否有一种简单的方法可以在不进行自定义功能的情况下实现此订单?
答案 0 :(得分:3)
只需将年份从您的format
订单中删除即可:
d <- seq.Date(from=as.Date("2009-01-01"),to=as.Date("2013-12-31"),by=1)
head(d[order(format(d,"%m%d"))])
[1] "2009-01-01" "2010-01-01" "2011-01-01" "2012-01-01" "2013-01-01"
[6] "2009-01-02"
答案 1 :(得分:1)
使用format
dat <- c("31-Dec-12","01-Jan-10", "01-Feb-11", "01-Jan-09" , "31-Dec-11")
dat <- as.Date(dat,format="%d-%b-%y")
dat[order(format(dat, "%y%m%d"))]
[1] "2009-01-01" "2010-01-01" "2011-02-01" "2011-12-31" "2012-12-31"
答案 2 :(得分:0)
您可以使用lubridate
包来执行此操作。
library(lubridate)
days <- seq(ymd("2009-01-01"), ymd("2013-01-01"), by = "1 day")
days[order(month(days), day(days), year(days))]
HTH