如何在R语言中按单行日期顺序提取列名至向量?
提取DataFrame第一行日期排序后的列名
当然可以搞定!咱们先明确需求:你有一个存储日期字符串的DataFrame,想要把第一行的日期按先后顺序排列后,把对应的列名存成一个向量,对吧?
先回顾下你的DataFrame构建代码和结构:
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
解决方案
我分两步写,逻辑更清晰,你也可以合并成一行:
- 先把第一行的字符串转成真正的日期类型(虽然当前格式下字符串排序也没问题,但转成日期类型是更严谨的做法)
- 对转换后的日期排序,提取对应的列名
具体代码:
# 提取第一行并转换为日期对象 first_row_dates <- as.Date(df[1, ]) # 按日期排序后提取列名 first.row.order <- names(first_row_dates[order(first_row_dates)])
运行后就能得到你想要的结果:
> first.row.order [1] "B" "C" "A"
如果想精简成一行代码,直接这样写也可以:
first.row.order <- names(as.Date(df[1, ])[order(as.Date(df[1, ]))])
简单解释下:as.Date(df[1, ])把第一行的每个字符串转为日期对象,order()会返回日期从小到大排序后的索引位置,用这个索引去匹配原列名,就得到了按日期顺序排列的列名向量。
内容的提问来源于stack exchange,提问作者joran.g
相关产品推荐
相关产品推荐

