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

如何在R中解析DD/MM/YY, HH:MM:SS格式日期时间并排序

R中按自定义格式日期时间排序的解决方案

你的核心问题是字符型日期时间列无法直接排序,必须先将其转换为R可识别的时间格式,再进行排序操作。以下是两种最常用的实现方式:

方法一:Base R原生实现

无需额外安装包,直接使用as.POSIXct()转换格式,配合order()排序:

# 1. 将字符型DateTime列转换为时间格式
df$DateTime_formatted <- as.POSIXct(df$DateTime, format = "%d/%m/%y, %H:%M:%S")

# 2. 按时间升序排序(从早到晚)
df_sorted_asc <- df[order(df$DateTime_formatted), ]

# 3. 按时间降序排序(从晚到早)
df_sorted_desc <- df[order(df$DateTime_formatted, decreasing = TRUE), ]

如果不需要保留转换后的中间列,也可以直接在排序时完成转换:

# 直接升序排序,不生成额外列
df_sorted_asc <- df[order(as.POSIXct(df$DateTime, format = "%d/%m/%y, %H:%M:%S")), ]

方法二:Tidyverse + Lubridate(更简洁)

借助lubridate包的dmy_hms()函数可以直接匹配你的日期时间格式,再用dplyr的arrange()排序:

# 先安装并加载所需包(首次使用需安装)
# install.packages(c("dplyr", "lubridate"))
library(dplyr)
library(lubridate)

# 转换格式并升序排序
df_sorted_asc <- df %>%
  arrange(dmy_hms(DateTime))

# 转换格式并降序排序
df_sorted_desc <- df %>%
  arrange(desc(dmy_hms(DateTime)))

关键说明

  • 格式参数"%d/%m/%y, %H:%M:%S"是核心:%d代表日,%m代表月,%y代表两位年份,%H:%M:%S对应24小时制的时分秒,完全匹配你的数据格式。
  • dmy_hms()是lubridate针对"日/月/年 时:分:秒"格式的专用转换函数,无需手动写格式字符串,更不易出错。

内容的提问来源于stack exchange,提问作者WhatsInAName

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.17 16:22:49