You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何在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

解决方案

我分两步写,逻辑更清晰,你也可以合并成一行:

  1. 先把第一行的字符串转成真正的日期类型(虽然当前格式下字符串排序也没问题,但转成日期类型是更严谨的做法)
  2. 对转换后的日期排序,提取对应的列名

具体代码:

# 提取第一行并转换为日期对象
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

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.14 08:46:28