【问题标题】:convert string to datetime R将字符串转换为日期时间 R
【发布时间】:2015-05-20 14:03:15
【问题描述】:

我想在 R 中将字符串转换为日期时间。

例如,我有 '20110101000' 作为字符串。我想将其转换为日期时间“2011-01-01 00:00”。我也想 '2011-01-01 01:00' 减去 '2011-01-01 00:00' = 1 小时。最终,我想有一个条件,如果两个日期时间之间的时间差不等于 1 小时

if(diff != 1){do something}

目前,我使用 as.Date 可以很好地将字符串转换为日期,但没有任何时间选项。 POSIXt 的结构也给了我一个奇怪的结果。

structure('201101010000',class=c('POSIXt', 'POSIXct'))
[1] "8342-08-21 19:40:00 EDT"

我有 100,000 多个文件必须运行此操作。请告诉我最有效的解决方案。

【问题讨论】:

  • 不要使用structure - 它不是一种用户友好的创建对象的方式 - 尝试例如:as.POSIXct("20110101000",format="%Y%m%d%H%M") 虽然这对于"20110101100" 会失败,因为它会认为你有上午 10 点而不是凌晨 1 点,因为小时/分钟没有分隔符。

标签: r date datetime


【解决方案1】:

您可以使用 Base R 包。

将日期转换为 POSIXcts。看看下面的代码。

    dt1 <- c("201101010100")
    dt2 <- c("201101010200")

    date1 <- as.POSIXct(dt1, format="%Y%m%d%H%M")
    date2 <- as.POSIXct(dt2, format="%Y%m%d%H%M")

    diff <- difftime(date2, date1, units="hours")
    if(diff != 1) {
     print("do something")
    }

【讨论】:

    猜你喜欢
    • 2020-04-25
    • 2015-09-17
    • 1970-01-01
    • 1970-01-01
    • 2022-08-18
    • 2017-08-31
    相关资源
    最近更新 更多