如何在数据框中对每年,每月和每月的日期进行排序

时间:2018-01-23 19:58:29

标签: r sorting date dataframe

如果我有这个数据框A:

A:

1           date     X      Y
2     1948-01-01     0      0
3     1948-01-10     0      0
4     1948-01-11     0      0
5     1948-01-12     0      0
6     1948-01-13     0      0
7     1948-01-14     0      0
8     1948-01-15     0      0
9     1948-01-16     0      0
10    1948-01-17     0      0
11    1948-01-18     0      0
12    1948-01-19     0      0
13    1948-01-02     0      0
14    1948-01-20     0      0
15    1948-01-21     0      0

我需要对日期进行排序,以确保日期顺序。获取此信息:

A:

1           date     X      Y
2     1948-01-01     0      0
      1948-01-02     0      0
      1948-01-03     0      0
      1948-01-04     0      0
      1948-01-05     0      0
      1948-01-06     0      0
      1948-01-07     0      0
      1948-01-08     0      0
      1948-01-09     0      0
3     1948-01-10     0      0
4     1948-01-11     0      0
5     1948-01-12     0      0
6     1948-01-13     0      0
7     1948-01-14     0      0
8     1948-01-15     0      0
9     1948-01-16     0      0
10    1948-01-17     0      0
11    1948-01-18     0      0
12    1948-01-19     0      0 
14    1948-01-20     0      0
15    1948-01-21     0      0

我正在尝试这个功能:

A[order(as.Date(A$date,format="%y-%m-%d")),] 

但是没有工作,关于如何解决它的任何想法?

2 个答案:

答案 0 :(得分:0)

尝试使用

A[order(as.Date(A$date, format = "%Y-%m-%d")), ] 

(注意“%Y”的大写字母)

答案 1 :(得分:-1)

我不确定这是否是世界上最优雅的解决方案,但它应该有效:

tt <- A$date
tt2 <- data.frame(ord = c(1:length(tt)),matrix(as.numeric(unlist(strsplit(tt,"-"))),ncol=3,nrow=length(tt),byrow=T))
tt2 <- tt2[order(tt2$X3,tt2$X2,tt2$X1),]

A <- A[tt2$ord,]