有没有办法在一行内获得日期顺序?(R)

有没有办法在一行内获得日期顺序?(R),r,R,假设我有一个两行三列的数据框: A <- c('2019-04-08', '2019-04-01') B <- c('2019-03-21', '2019-03-08') C <- c('2019-03-25', '2019-04-28') df <- data.frame(A, B ,C) df A B C 1 2019-04-08 2019-03-21 2019-03-25 2 2019-04-01 2019

假设我有一个两行三列的数据框:

A <- c('2019-04-08', '2019-04-01')
B <- c('2019-03-21', '2019-03-08')
C <- c('2019-03-25', '2019-04-28')
df <- data.frame(A, B ,C)

df
           A          B          C
1 2019-04-08 2019-03-21 2019-03-25
2 2019-04-01 2019-03-08 2019-04-28

A我想这可能会奏效:

names(df) <- names(sort(df[1,]))
名称(df)我们可以使用

names(df)[order(as.Date(unlist(df[1, ])))]
#[1] "B" "C" "A"
如果要使用重新排序数据帧

df[order(as.Date(unlist(df[1, ])))]

#           B          C          A
#1 2019-03-21 2019-03-25 2019-04-08
#2 2019-03-08 2019-04-28 2019-04-01

如果需要每行的列名顺序,请参见:

v <- t(apply(df,1,function(x) names(df)[order(as.Date(x))]))

我们可以从
data.table

library(data.table)
i1 <- setDT(df)[1, order(as.IDate(unlist(.SD)))]
setcolorder(df, i1)
df
#            B          C          A
#1: 2019-03-21 2019-03-25 2019-04-08
#2: 2019-03-08 2019-04-28 2019-04-01
库(data.table)
i1
> v
     [,1] [,2] [,3]
[1,] "B"  "C"  "A" 
[2,] "B"  "A"  "C" 
library(data.table)
i1 <- setDT(df)[1, order(as.IDate(unlist(.SD)))]
setcolorder(df, i1)
df
#            B          C          A
#1: 2019-03-21 2019-03-25 2019-04-08
#2: 2019-03-08 2019-04-28 2019-04-01