有没有办法在一行内获得日期顺序?(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