我有一组来自美国各地的数据,我想将每个“主体”的数据转换为当地时间。我已经在每个事件上有了UTC时间戳,并将其转换为POSIXct格式,但每次我尝试在任何POSIXct/POSIXlt函数中包括
如何将时间戳转换为每个“主体”的本地时间?
谢谢, Shorthand
tz = DS$Factor
或tz = as.character(DS$Factor)
的向量时(包括format()
和strftime()
),都会出现以下错误:
如果我只输入Error in as.POSIXlt.POSIXct(x, tz = tz) : invalid 'tz' value
tz ='US/Eastern'
它就可以正常工作,但当然不是所有的值都来自该时区。如何将时间戳转换为每个“主体”的本地时间?
DS$Factor
有5个值:US/Arizona US/Central US/Eastern US/Mountain US/Pacific谢谢, Shorthand
as.POSIXct
不喜欢接受向量,它只接受字符串。因此,使用rowwise()
可以避免使用force_tz
的解决方法。所以这个可以工作:df %>% rowwise() %>% mutate(moment = as.POSIXct(timestring, format="%Y-%m-%d %H:%M:%S", tz=localzone) %>% ungroup()
- Lloyd Christmasrowwise
方法非常慢。我建议查看这些解决方案,它们速度更快:https://community.rstudio.com/t/working-with-timezones-in-lubridate/4260/6 - Lloyd Christmas