【问题标题】:How to sort dates per year, month and dat in a dataframe如何在数据框中对每年、每月和 dat 的日期进行排序
【发布时间】:2018-07-02 18:03:42
【问题描述】:

如果我有这个数据框 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")),] 

但是不工作,有什么办法解决吗?

【问题讨论】:

  • 我假设您使用的是 R,所以我添加了 R 标签。
  • 究竟是什么不起作用(您的错误消息或观察到的意外行为是什么)?

标签: r sorting date dataframe


【解决方案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,]

【讨论】:

    【解决方案2】:

    尝试改用

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

    (注意“%Y”的大写)

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2021-04-04
      • 2021-08-29
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多