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

如何修正R中datetime向量年份与日期顺序转换错误?

正确解析timestamp列的日期格式

问题分析

你的解析代码出错是因为指定的格式字符串和原始timestamp的格式不匹配:

  • 原始timestamp格式为 日.月.两位年份 时:分(例如 "03.12.20 6:00")
  • 你错误使用了 %Y.%m.%d(代表年.月.日),导致程序把"03"当成了四位数年份的前两位,最终解析出错误的0003-12-20

解决方案

方法1:使用base R的as.POSIXct

指定正确的格式字符串"%d.%m.%y %H:%M",各占位符含义:

  • %d:两位日期
  • %m:两位月份
  • %y:两位年份(自动补全为20xx年)
  • %H:%M:小时:分钟

代码示例:

# 正确解析timestamp列
po59$timestamp <- as.POSIXct(po59$timestamp, format = "%d.%m.%y %H:%M", tz = Sys.timezone())

# 验证转换结果
po59$timestamp

# 重新转换为bupaR eventlog对象
po59br <- bupaR::eventlog(eventlog = po59,
                          case_id = "case_id",
                          activity_id = "activity",
                          activity_instance_id = "action",
                          lifecycle_id = "lifecycle",
                          timestamp = "timestamp",
                          resource_id = "resource")

方法2:使用lubridate包(更简洁)

lubridate可以自动识别这种欧洲风格的日期格式,无需手动指定格式规则:

library(lubridate)

# 解析timestamp列
po59$timestamp <- dmy_hm(po59$timestamp, tz = Sys.timezone())

# 后续转换为eventlog的步骤同上

验证结果

转换完成后,timestamp列会呈现为2020-12-03 06:00:00(带时区信息)的正确格式。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.19 20:40:49