gpt4 book ai didi

r - 带时区向量的with_tz

转载 作者:行者123 更新时间:2023-12-03 16:14:18 28 4
gpt4 key购买 nike

我有一个像这样的数据框:

library(dplyr)
data <- data_frame(
timestamp_utc = c('2015-11-18 03:55:04', '2015-11-18 03:55:08',
'2015-11-18 03:55:10'),
local_tz = c('America/New_York', 'America/Los_Angeles',
'America/Indiana/Indianapolis')
)

我需要创建一个新变量,将其UTC时间戳转换为 local_tz列中定义的本地时间。但是, formatwith_tz(来自 lubridate)都只期望一个时区,而不是时区的向量。我正在寻找这样的东西:
mutate(data, timestamp_local = with_tz(timestamp_utc, tzone = local_tz))

有任何想法吗?

最佳答案

首先,请确保您的数据已加载为日期-我必须先将其转换为日期:

data$timestamp_utc <- as.POSIXct(data$timestamp_utc, tz = "UTC")

然后,您可以将 rowwise中的 dplyr函数与 do结合使用:
library(lubridate)
library(dplyr)
z <- data %>% rowwise() %>%
do(timestamp_local = with_tz(.$timestamp_utc, tzone = .$local_tz))
data$timestamp_local <- z$timestamp_local

data$timestamp_local
[[1]]
[1] "2015-11-17 22:55:04 EST"

[[2]]
[1] "2015-11-17 19:55:08 PST"

[[3]]
[1] "2015-11-17 22:55:10 EST"

我们需要将timestamp_local列设为列表,否则所有时区都将转换回一个时区(向量中只能包含一个时区)。

关于r - 带时区向量的with_tz,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33848563/

28 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com