R中的自定义排序顺序方法?
我有一个data.frame d,其中有一个日期列,格式为d$date[1]=“01-Jan-09”到d$date[1825]=“31-Dec-13”。当我使用order排序时R中的自定义排序顺序方法?,r,sorting,date,R,Sorting,Date,我有一个data.frame d,其中有一个日期列,格式为d$date[1]=“01-Jan-09”到d$date[1825]=“31-Dec-13”。当我使用order排序时 d[order(as.Date(d$date,format="%d%b%y")),] 它按时间顺序正确排序,但是我希望它忽略年份进行排序 我想把输出排序为“01-Jan-09”、“01-Jan-10”、“01-Jan-11”,“2011年12月31日”、“2012年12月31日”,最后是“2013年12月31日” 是
d[order(as.Date(d$date,format="%d%b%y")),]
它按时间顺序正确排序,但是我希望它忽略年份进行排序
我想把输出排序为“01-Jan-09”、“01-Jan-10”、“01-Jan-11”,“2011年12月31日”、“2012年12月31日”,最后是“2013年12月31日”
是否有一种简单的方法可以实现此订单,而无需定制功能?只需将年份从您的
格式中删除即可:
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"
d只需将年份从您的格式中删除即可
订单规格:
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"
d使用格式
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"
dat使用格式
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"
dat您可以使用lubridate
软件包执行此操作
library(lubridate)
days <- seq(ymd("2009-01-01"), ymd("2013-01-01"), by = "1 day")
days[order(month(days), day(days), year(days))]
库(lubridate)
天您可以使用lubridate
软件包执行此操作
library(lubridate)
days <- seq(ymd("2009-01-01"), ymd("2013-01-01"), by = "1 day")
days[order(month(days), day(days), year(days))]
库(lubridate)
谢谢你!非常有效@迈克尔伯德,不客气。请注意,我已将此编辑为使用月首,否则您将获得秒前的所有月首,等等谢谢!非常有效@迈克尔伯德,不客气。请注意,我已将此编辑为使用月首,否则您将获得秒前的所有月首,等等