根据时间顺序对数据进行排序?

时间:2020-09-16 11:37:13

标签: r dataframe

有人可以帮我这个忙,我需要按递增顺序对数据集的时间进行排序。我该怎么办?

Input:
 
11:00 02:40 05:50 03:20
 1     1     1     1
 0     1     1     1
 0     1     1     1

Output:

 02:40  03:20  05:50  11:00
    1    1     1       1
    1    1     1       0
    1    1     1       0


Sample data:

  
 df<-structure(list(c("11:00", 1, 0, 0),
                       c("02:40", 1, 1, 1), c("05:50", 1, 1, 1), c("03:20",  1,  1,1)), row.names = c(NA,4L), class = "data.frame")
                                      

                                                                                  

3 个答案:

答案 0 :(得分:3)

您可以尝试order + strptime

> df[order(strptime(df[1,],"%H:%M"))]

1 02:40 03:20 05:50 11:00
2     1     1     1     1
3     1     1     1     0
4     1     1     1     0

答案 1 :(得分:3)

使用chronorder

df[order(chron::times(paste0(df[1,], ":00")))]
#1 02:40 03:20 05:50 11:00
#2     1     1     1     1
#3     1     1     1     0
#4     1     1     1     0

答案 2 :(得分:2)

您可以在第1行的order上使用as.difftime

df[,order(as.difftime(as.character(df[1,]), "%H:%M"))]
#1 02:40 03:20 05:50 11:00
#2     1     1     1     1
#3     1     1     1     0
#4     1     1     1     0