Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/sorting/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
R中的自定义排序顺序方法?_R_Sorting_Date - Fatal编程技术网

R中的自定义排序顺序方法?

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日” 是

我有一个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 <- 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)

谢谢你!非常有效@迈克尔伯德,不客气。请注意,我已将此编辑为使用月首,否则您将获得秒前的所有月首,等等谢谢!非常有效@迈克尔伯德,不客气。请注意,我已将此编辑为使用月首,否则您将获得秒前的所有月首,等等