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

R语言中Lubridate读取日期时间异常问题求助

解决R中日期解析错误及计算骑行时间差的方案

问题根源

你的日期字符串是DD/MM/YYYY HH:MM格式,但R默认的日期解析逻辑会按MM/DD/YYYY识别,导致日、月、年的解析顺序错乱,出现类似2-07-20的错误结果。

具体解决步骤

1. 正确解析日期时间列

利用tidyverse包含的lubridate包中的dmy_hm()函数,专门处理日/月/年 时:分格式的字符串,将其转换为R可识别的日期时间类型:

library(tidyverse)

# 读取CSV并解析日期时间列
Total_trips <- read_csv("1_202107.csv") %>%
  mutate(
    started_at = dmy_hm(started_at),
    ended_at = dmy_hm(ended_at)
  )

2. 计算骑行时间差

直接用difftime()函数计算ended_at与started_at的时间差,可指定单位(如分钟、小时):

Total_trips <- Total_trips %>%
  mutate(trip_duration = difftime(ended_at, started_at, units = "mins"))

3. 提取日期组件与星期几

通过lubridate的便捷函数或format(),从已解析的日期中提取所需字段:

Total_trips <- Total_trips %>%
  mutate(
    date = as.Date(started_at),
    day = day(started_at),    # 提取日
    month = month(started_at),# 提取月
    year = year(started_at),  # 提取年
    # 提取星期几全称(如Friday)
    day_of_week = wday(started_at, label = TRUE, abbr = FALSE)
  )

如果习惯用format(),也可以替换为:

Total_trips$day_of_week <- format(Total_trips$date, "%A")

验证结果

经过上述处理,02/07/2021 14:44会被正确解析为2021年7月2日,对应的星期几为Friday(星期五),日期组件与星期几的提取均不会再出现顺序错乱。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.21 21:09:25