gpt4 book ai didi

r - 从具有多个时区 R 的字符向量中提取时间

转载 作者:行者123 更新时间:2023-12-03 16:49:36 25 4
gpt4 key购买 nike

我有一些以日期、时间和时区作为字符向量的数据:
times <- c("2020:03:04 13:31:45+11:00", "2020:03:06 13:28:45+11:00")
我想将这些转换为 POSIXct 对象的向量,而无需手动输入时区。
如果我使用 lubridate 创建 POSIXct 被转换为 UTC 意味着我有错误的时间:

library(lubridate)
ymd_hms(times)
[1] "2020-03-04 02:31:45 UTC" "2020-03-06 02:28:45 UTC"

如果我使用 tz,这可以得到纠正
ymd_hms(times, tz = 'Australia/Sydney')
[1] "2020-03-04 13:31:45 AEDT" "2020-03-06 13:28:45 AEDT"
gsub(".*[+-]", "", times)
[1] "11:00" "11:00"

但是,我想自动化具有多个时区的数据集的过程,例如:
times <- c("2020:03:04 13:31:45+11:00", "2020:03:06 13:28:45-06:00")

我目前的解决方法是尝试提取时区偏移量并将该值添加回 POSIXct 向量,但我没有成功检索 +/- 符号...:
sub(".*[+-]", "\\1", times)
[1] "11:00" "06:00"

最佳答案

一种技巧是分别获取偏移量和时间值,然后将它们组合在一起。

library(lubridate)

times <- c("2020:03:04 13:31:45+11:00", "2020:03:06 13:28:45-06:00")

offset <- sub(".*([+-].*)", "\\1", times)
offset
#[1] "+11:00" "-06:00"

only_times <- sub('[+-].*', '', times)
only_times
#[1] "2020:03:04 13:31:45" "2020:03:06 13:28:45"

ymd_hms(only_times) - hm(offset)
#[1] "2020-03-04 02:31:45 UTC" "2020-03-06 19:28:45 UTC"

关于r - 从具有多个时区 R 的字符向量中提取时间,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/60628840/

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