【发布时间】:2022-01-02 19:22:31
【问题描述】:
我有一个包含日期列的数据框,没有时间。我想将其转换为日期时间格式,使用 00:00:00 作为时间戳。并打印时间。
从这些帖子1、2 和3 中,我了解到R 中的时间格式可能会省略午夜,因此我使用@ACuriousCat 解决方案打印时间。我拥有的更简单的代码是:
data<-c(NA,"2014-03-18","2014-04-01","2014-04-15","2014-04-28","2014-05-14")
> data
[1] NA "2014-03-18" "2014-04-01" "2014-04-15" "2014-04-28" "2014-05-14"
> data1<-format(as.POSIXct(data,tz='UTC'),"%Y-%m-%d %H:%M:%S")
> data1
[1] NA "2014-03-18 00:00:00" "2014-04-01 00:00:00" "2014-04-15 00:00:00" "2014-04-28 00:00:00"
[6] "2014-05-14 00:00:00"
效果很好!但是,在我的真实数据集上,时间将是
> data1
[1] NA "2014-03-18 01:00:00" "2014-04-01 02:00:00" "2014-04-15 02:00:00" "2014-04-28 02:00:00"
[6] "2014-05-14 02:00:00"
我的数据在 R 中读取或编码的方式看起来像是时区问题 + 夏令时问题。但我该如何解决呢?我尝试了不同的时区,它没有用。到目前为止,我能做的就是:
> data1<-format(as.POSIXct(as_datetime(as.double(as.POSIXct(data)+3600)-3600),tz='UTC'),"%Y-%m-%d %H:%M:%S")
> data1
[1] NA "2014-03-18 00:00:00" "2014-04-01 00:00:00" "2014-04-15 00:00:00" "2014-04-28 00:00:00"
[6] "2014-05-14 00:00:00"
有没有更简单的编码方式?
【问题讨论】:
-
尝试将
tz='UTC'也添加到format调用中。 -
感谢您的建议。我试过了,还是不行。
-
我第一次编码错了,但是是的,这实际上很好地解决了它!谢谢(如果你想让它成为一个答案,我会接受它)。