【问题标题】:How to parse dates and times with 00 minutes and 00 seconds in r?如何用 r 中的 00 分钟和 00 秒解析日期和时间?
【发布时间】:2019-02-26 07:46:32
【问题描述】:

我有一个大型数据集,其中日期和时间为 16 位(格式为 yyyymmddhhmmssss2005031600003000)字符串。

我已经编写了以下解析命令(从字符串中删除最后 2 位数字):

DATA[, 1 ] <- substr(DATA[, 1 ], 1, 14)
DATA[, 1 ] <- ymd_hms(DATA[, 1 ], quiet = FALSE)

解析工作正常,除了 00 分 00 秒的时间(例如 2005030507000000)无法解析。

这个问题有解决办法吗? parse_date_time 命令有完全相同的问题。

【问题讨论】:

  • Ismo,如果我的回答解决了你的问题,请考虑accept the answer
  • 问题是,即使是 00 分和 00 秒的时间也被当作科学记数法读入。使用 {options(scipen=999)} 解决了这个问题。秒的最后两位数字被删除,因为它们都是零。没有尝试使用 4 位数秒进行格式化,可能也可以。

标签: r datetime lubridate


【解决方案1】:

尝试as.POSIXct 并将最后两个零传递给格式化

x <- c("2005031600003000", "2005030507000000")
as.POSIXct(x, format = "%Y%m%d%H%M%S00")
# [1] "2005-03-16 00:00:30 CET" "2005-03-05 07:00:00 CET"

来自?strptime

%H : 小时为十进制数 (00–23) ...

%M : 分钟为十进制数 (00–59)

%S : 秒为整数 (00–61) ...

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-07-12
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多