将字符串转换为日期时间格式 R

3

我想在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 点,因为没有分隔符来表示小时/分钟。 - thelatemail
1个回答

12

您可以使用基础的R包。

将日期转换为POSIXct格式。请参考下面的代码。

    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")
    }

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接