【问题标题】:Parsing date and time using base R使用base R解析日期和时间
【发布时间】:2018-02-02 06:15:07
【问题描述】:
x <- "15/06/2016 12:56:39" #where the format is dd/mm/Y and time
x <- as.POSIXct(strptime(x, format="%d/%m/%Y %H:%M:%OS"))

返回

"2016-06-15 12:56:39 CEST"

忽略格式参数。

我尝试传递 strftime 而不是 strptime,但它会引发关于字符串格式不明确的错误。

我如何返回一个时间戳,使用基数 R 保留原始 format="%d/%m/%Y %H:%M:%OS"

我知道我可以使用 lubridate,但是在我当前的环境中我无法导入新的库。

【问题讨论】:

  • as.POSIXct 有格式参数吗?我不这么认为。
  • 我相信,这个问题之前在 SO 上已经被问过很多次了。我相信,有一个误解。您需要区分 (a) 以字符串形式给出的日期和日期时间,(b) 日期和日期时间的内部表示为 DatePOSIXct 等类,以及 (c) 默认格式当打印DatePOSIXct 等类的对象时。
  • @Onyambu,当然有,见?help("as.POSIXct")。但是,应指定时区参数tz 以避免出现警告。
  • 是因为省略号吗?嗯,我想是的。

标签: r date datetime


【解决方案1】:

只是在此之上的另一种格式。

x <- "15/06/2016 12:56:39" #where the format is dd/mm/Y and time
format(strptime(x, format="%d/%m/%Y %H:%M:%OS"),"%d/%m/%Y %H:%M:%OS")

【讨论】:

  • 谢谢-但是当我将它包装成 as.POSIXct 时,它仍然没有返回正确的格式。
  • @Abra 你想要一个日期对象作为结果吗,如果是这样的话,日期格式会对你的分析产生什么影响?
  • 我需要修改格式以将数据摄取到数据可视化工具中,该工具会引发“日期超出范围错误”,因为它使用区域设置而不是 ISO 标准格式来解释日期。
【解决方案2】:

你在找这个吗?

 x <- "2016-06-15 12:56:39" 
 x <- as.POSIXct(strftime(x, format="%d/%m/%Y %H:%M:%OS"))

【讨论】:

  • 不幸的是,正如我在原帖中提到的,stringftime 会引发错误。
【解决方案3】:

我相信,这个问题之前在 SO 上已经被问过很多次了。

我相信,有一个误解。你需要区分

  • 以字符串形式给出的日期和日期时间,
  • 日期和日期时间的内部表示为 DatePOSIXct 等类,以及
  • 打印DatePOSIXct 等对象时的默认格式。

内部表示的好处是您可以分别进行日期或日期时间算术,并且可以正确排序。

你在两个地方需要format

  1. 将字符串强制转换为内部表示以告知在何处查找字符串中的日、月、年、小时、分钟和秒信息以及要忽略哪些字符。
  2. 在将内部表示强制转换为字符串时,例如在打印时,以告知在所需输出中将日、月、年、小时、分钟和秒信息放在何处。

默认情况下,许多地方都采用 ISO 标准格式 (YYYY-MM-DD hh:mm:ss)。 ISO 格式的好处是它是明确的,并且它可以像字符串一样排序。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2023-03-06
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多