有没有一种方法可以获取一行中的日期顺序? (右)

时间:2019-11-29 12:22:13

标签: r

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

struct vec3 {
   double* base;
   double& x() { return *base; }
   double& y() { return *(base+1); }
   double& z() { return *(base+2); }
};
struct mat3 {
   double values[9];
   vec3 operator[](size_t s) { return vec3{values+3*s}; }
};

有没有一种方法可以将第一行中的日期按日期顺序添加到向量中?

在这种情况下:

y()

4 个答案:

答案 0 :(得分:0)

我认为这可以解决问题:

names(df) <- names(sort(df[1,]))

答案 1 :(得分:0)

我们可以使用

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

答案 2 :(得分:0)

如果您希望每一行的列名顺序,则为:

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

给予

> v
     [,1] [,2] [,3]
[1,] "B"  "C"  "A" 
[2,] "B"  "A"  "C" 

答案 3 :(得分:0)

我们可以使用setcolorder中的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