【发布时间】:2018-12-07 19:01:47
【问题描述】:
假设我有一个 df,其中包含对一项调查的一系列回复。每个响应都有一个 UTC 时间戳。我也恰好有填写调查表的每个人的当地时区。
例如:
df <- data.frame(day = c("2018-12-06 15:40:29", "2018-12-06 15:25:28",
"2018-12-06 15:25:28", "2018-12-06 14:09:09"), time_zone = c("EST", "PST", "CST", "EST"))
df$day <- as.POSIXct(df$day, tz = "UTC")
我希望所有这些日期都反映参加调查的人在当地的时间。所以我尝试了以下方法:
df %>%
mutate(time_start = format(day, tz = time_zone))
但我得到Error in mutate_impl(.data, dots) : Evaluation error: invalid 'tz' value.
我也尝试过使用具有 GTM 格式时区的数据框
df<- data.frame(day = c("2018-12-06 15:40:29", "2018-12-06 15:25:28",
"2018-12-06 15:25:28", "2018-12-06 14:09:09"),
time_zone = c("GMT-5", "GMT-6", "GMT-7", "GMT-8"))
有没有办法将一系列标准化时间改为当地时间?
【问题讨论】:
-
我怀疑有两个问题:(1)我熟悉的日期/时间函数都没有为
tz取多个值,因此invalid 'tz' value; (2)"GMT-7"未被 R 识别为有效时区,通过format(Sys.time(), tz="GMT-7")与format(Sys.time(), tz="GMT")进行验证。
标签: r datetime timezone posixct