gpt4 book ai didi

r - 日期、时区和 POSIXct

转载 作者:行者123 更新时间:2023-12-04 16:09:14 24 4
gpt4 key购买 nike

我只是害怕一个大数据文件,“DATE”列存储为 O5JAN2004、06JAN2004 之类的字符。此数据文件中的时间与纽约时间匹配,我住在洛杉矶。

然后我使用 as.Date 将字符转换为日期。

t <- as.Date(key$DATE[1], format = "%d%b%Y")
[1] "2004-01-05"

但是当我使用 as.POSIXct(t) 时,它返回给我:

 > as.POSIXct(t)
[1] "2004-01-04 16:00:00 PST"
> as.POSIXlt(t)
[1] "2004-01-05 UTC"

我尝试了网站上提到的几种方法,但结果没有改变:

t <- as.Date(key$DATE[1], format = "%d%b%Y", 'PST')
t <- as.Date(key$DATE[1], format = "%d%b%Y", 'EST')
t <- as.Date(key$DATE[1], format = "%d%b%Y", tz="America/New_York")
t <- as.Date(keyi$DATE[1], format = "%d%b%Y", tz="America/Los_Angeles")
as.POSIXct(t, tz = "America/Los_Angeles")
as.POSIXct(t, tz = "America/New_York")

我想知道:当我使用 as.POSIXct(t) 时我能做什么,它会返回“2004-01-05 PST”或任何其他时区。

我在想,因为 Date 最初是作为字符存储的,所以它不会记住它原来的时区,对吗?

我明白了

as.Date(as.POSIXct(t))
> "2004-01-05"

但是为什么 as.POSIXct(t) 会返回之前的结果呢?因为我还有其他数据文件,所以我会使用 as.POSIXct(t) 获得“2004-01-05 PST”。

谢谢!

最佳答案

您的 as.POSIXlt(t) 显示 as.Date 默认使用 GMT。但是 as.POSIXct 默认使用本地时间,因此存在不需要的转换。但你可以解决这个问题。

strptime 有一个 tz 参数来指定基准时区。这对我有用:

t = strptime(key$DATE[1], format = "%d%b%Y", tz= "America/Los_Angeles")
as.POSIXct(t)
[1] "2004-01-05 PST"

警告:什么作为 tz 的值起作用和不起作用似乎很奇怪。

关于r - 日期、时区和 POSIXct,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45898792/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com