转换为 R 中的本地时间 - 时区向量

Sho*_*and 5 format timezone strftime posixct posixlt

我有一组来自美国各地的数据,我正在尝试将其转换为每个“主题”的当地时间。我对每个事件都有 UTC 时间戳,并将其转换为 POSIXct 格式,但每次我尝试在任何 POSIXct/POSIXlt 函数(包括和)中包含tz = DS$Factor或 的向量时,都会收到一条错误消息:tz = as.character(DS$Factor)format()strftime()

as.POSIXlt.POSIXct(x, tz = tz) 中的错误:无效的“tz”值

如果我只是输入tz = 'US/Eastern'它就可以正常工作,但当然并非我的所有值都来自该时区。

如何将每个“主题”的时间戳记为当地时间?

DS$Factor5 个值:US/Arizona US/Central US/Eastern US/Mountain US/Pacific

谢谢,速记

Sho*_*and 0

因此,我能够创建一个 for 循环来执行此操作,但速度很慢,大约需要 10 分钟才能运行。我无法弄清楚apply()sytnax,并且肯定会感谢一些帮助,以创建一种更快、更可并行的方式来执行此操作,因为数据存储有 768k 观察值并且还在不断增长。

>     require(lubridate)
>     
>     loct = NULL for (i in 1:nrow(DS))
>     {
>       loct[i] <- with_tz(DS$UTC[i],tzone =
>       ifelse(DS$timezone[i]=="","US/Eastern",as.character(DS$timezone[i])))
>     } DS$localtime <- as.POSIXct(loct, origin ="1970-01-01") remove (loct, i)
Run Code Online (Sandbox Code Playgroud)