【发布时间】:2020-11-25 04:38:16
【问题描述】:
我在 R 中有一个具有以下结构的数据框:
df <- data.frame(
long = c(-112, 34, 39),
lat = c(41, -92, -76),
state=c("utah", "arkansas", "maryland"),
utc_time = c(1593855055, 1593826821, 1593826447)
)
长纬度状态 utc_time 1 -112 41 犹他州 1593855055
2 34 -92 阿肯色州 1593826821
3 39 -76 马里兰州 1593826447
我想使用 lat、long 或州代码将 utc_time 转换为本地时间。我不知道原始 utc 戳是什么时间,但似乎很可能是 GMT。
想法? 谢谢。
更新:
谢谢弗利克先生。是的,这很有帮助。虽然我无法让时区包工作。我确实使用了随附的形状文件并进行了空间连接。
TZ <- st_read("shape file from http://efele.net/maps/tz/us/")
df <- st_as_sf(df, coords = c("long", "lat"), crs = st_crs(TZ))
df <- st_join(df, TZ)
现在我有一个如下所示的数据框:
df <- data.frame(
TZID = c("America/New_York", "America/Denver", "America/New_York"),
utc_time = c(1593855055, 1593826821, 1593826447)
)
我仍在努力让 R 将其识别为当地时间:
df$date <- as.POSIXct(df$utc_time, tz=TZID)
我不知道我的向量化是否不正确,或者我是否误解了 POSIXct 命令。尽管如此,我发现您的回答非常有帮助。谢谢。
【问题讨论】:
-
你能提供更好的示例数据吗?纬度不能为 -112。
-
试试
Reduce(c, Map(function(x, tz, ...) as.POSIXct(x, tz, ...), df$utc_time, df$TZID, origin="1970-01-01"))。