按列名称将数据框的列排序为Date

时间:2017-10-06 14:01:36

标签: r sorting date dataframe

问题link中处理了类似的问题 我有数据框,日期为列名。

test = data.frame("01-Apr-16" = c(0, 2, 4, 7, 8), 
                  "01-Jan-16" = c(4, 2, 4, 7, 8), 
                  "01-Dec-16" = c(1, 3, 8, 3, 2))

我已将日期转换为相应的数字格式

new_names = apply(data.frame(names(test)), 1, function(x) as.Date(strptime(x,format = "%d-%b-%y")))
colnames(test) = new_names  

提供的解决方案test[ , order(names(test))]不起作用。 是否有效解决问题。

我已从外部.csv文件中读取数据框,该文件在列名中保留日期的原始格式。

1 个答案:

答案 0 :(得分:2)

您不需要apply

i1 <- as.Date(names(test), format = 'X%d.%b.%y')
test[order(i1)]

给出,

  X01.Jan.16 X01.Apr.16 X01.Dec.16
1          4          0          1
2          2          2          3
3          4          4          8
4          7          7          3
5          8          8          2