我无法更改POSIXct对象的时区。遵循以下建议: Change timezone in a POSIXct object
我试过
> test
timestamp dttm_utc value estimated anomaly SITE_ID
954157 1328043600 2012-02-01 00:00:00 16.4803 0 NA 31
954158 1328043900 2012-02-01 00:05:00 16.4364 0 NA 31
> attributes(test[2,2])$tzone
TIME_ZONE
"America/New_York"
> attributes(test[2,2])$tzone <- "America/Los_Angeles"
> attributes(test[2,2])$tzone
TIME_ZONE
"America/New_York"
为什么这不起作用?我该如何解决这个问题?
答案 0 :(得分:4)
问题是tzone
是整个向量的属性。每个元素都不能拥有自己的时区。您可以更改整个矢量的时区。考虑这个例子
x<-as.POSIXct(c("2012-02-01 00:00:00","2012-02-01 00:05:00"), tz="America/New_York")
attributes(x[1])$tzone
# [1] "America/New_York"
# does not change
attributes(x[1])$tzone<-"America/Los_Angeles"
attributes(x[1])$tzone
# [1] "America/New_York"
#changes
attributes(x)$tzone<-"America/Los_Angeles"
attributes(x[1])$tzone
# [1] "America/Los_Angeles"
如果您有来自不同时区的日期,您可以使用UTC偏移指定时区,然后将它们全部转换为公共时区
x<-as.POSIXct(c("2012-02-01 00:00:00-0800","2012-02-01 00:05:00-0500"),
format="%Y-%m-%d %H:%M:%S%z", tz="America/Los_Angeles")
# [1] "2012-02-01 00:00:00 PST" "2012-01-31 21:05:00 PST"