gpt4 book ai didi

r - 在一个数据框列中使用多个时区

转载 作者:行者123 更新时间:2023-12-05 05:44:19 25 4
gpt4 key购买 nike

我有一个由 8 个不同数据集组成的大型数据框,下面是三个具有不同时区的样本。我导入数据,然后将 8 个数据帧绑定(bind)到一个 df 中。我希望能够运行分析并绘制整个数据集或其部分的 ggplot,以保持每个区域的 Date_time 时区正确。

我最近发现 R 中的数据帧显然不支持一列中的多个时区,因此使用 rbind 添加的所有后续 df 都采用第一个数据的时区(df$Date_time 从导入值更改),我试过解决这个问题的不同方法:

  1. 将数据帧保存为列表,并创建 8 个列表的列表可使 listx$Date_time 中的本地时区保持正确,但 ggplot 不允许从列表中绘图,当我转换回数据帧时时区再次更改。

  2. 我创建了 df$tz 列以在文件中包含每个时区,我试过这个:solution创建固定的 UTC 时间,但这是一个字符串 df$UTC,我不确定如何让 R 和 ggplot 使用正确的时区信息绘制数据。

df$Date 在不同时区保持正确,因为时间被剥离,df$time_ser 在日期被剥离时保持正确。

我是否需要包含一个函数来计算我在运行时所做的每个分析中的实际本地时间 - 非常耗时,或者是否有其他方法可以做到这一点。

具有三个时区的示例数据框“df”:

> df
Date_time Depth Date time_ser UTC tz
1 2013-10-14 12:30:00 64.45 2013-10-14 12:30:00 2013-10-14 03:30:00 UTC Asia/Tokyo
2 2013-10-14 12:30:05 65.95 2013-10-14 12:30:05 2013-10-14 03:30:05 UTC Asia/Tokyo
3 2013-10-14 12:30:10 65.95 2013-10-14 12:30:10 2013-10-14 03:30:10 UTC Asia/Tokyo
4 2013-10-14 12:30:15 66.45 2013-10-14 12:30:15 2013-10-14 03:30:15 UTC Asia/Tokyo
5 2013-10-14 12:30:20 67.95 2013-10-14 12:30:20 2013-10-14 03:30:20 UTC Asia/Tokyo
6 2013-10-14 12:30:25 66.95 2013-10-14 12:30:25 2013-10-14 03:30:25 UTC Asia/Tokyo
31 2018-05-09 04:11:39 0.00 2018-05-08 14:11:39 2018-05-08 19:11:39 UTC America/Lima
32 2018-05-09 04:11:42 0.00 2018-05-08 14:11:42 2018-05-08 19:11:42 UTC America/Lima
33 2018-05-09 04:11:45 0.00 2018-05-08 14:11:45 2018-05-08 19:11:45 UTC America/Lima
34 2018-05-09 04:11:48 0.00 2018-05-08 14:11:48 2018-05-08 19:11:48 UTC America/Lima
35 2018-05-09 04:11:51 0.00 2018-05-08 14:11:51 2018-05-08 19:11:51 UTC America/Lima
36 2018-05-09 04:11:54 0.00 2018-05-08 14:11:54 2018-05-08 19:11:54 UTC America/Lima
43 2019-03-06 13:52:40 0.50 2019-03-06 17:52:40 2019-03-06 04:52:40 UTC Pacific/Auckland
44 2019-03-06 13:52:50 3.50 2019-03-06 17:52:50 2019-03-06 04:52:50 UTC Pacific/Auckland
45 2019-03-06 13:53:00 6.50 2019-03-06 17:53:00 2019-03-06 04:53:00 UTC Pacific/Auckland
46 2019-03-06 13:53:10 9.00 2019-03-06 17:53:10 2019-03-06 04:53:10 UTC Pacific/Auckland
47 2019-03-06 13:53:20 9.50 2019-03-06 17:53:20 2019-03-06 04:53:20 UTC Pacific/Auckland
48 2019-03-06 13:53:30 12.00 2019-03-06 17:53:30 2019-03-06 04:53:30 UTC Pacific/Auckland

最佳答案

I want to be able to run analysis and ggplot the whole dataset or sections of it keeping the Date_time timezone correct to each area.

我将其解释为“我想在本地时间绘制所有数据”,即我希望奥克兰的上午 11 点相当于利马/东京的上午 11 点。

实现此目的的一种方法是使用 lubridate::force_tz函数,它在不调整“时间”组件的情况下更改 POSIXct 对象的时区。

> t = as.POSIXct('2013-10-14 12:30:00', tz = 'Asia/Tokyo')

> t
[1] "2013-10-14 12:30:00 JST"

> lubridate::force_tz(t, 'UTC')
[1] "2013-10-14 12:30:00 UTC"

如果您在合并所有原始数据帧之前执行此操作,那么您可以假设所有数据都在同一时区,并且东京的上午 11 点与利马的上午 11 点相同。

当然,您可能希望保留实时时区的记录,以防您想要将它们转换回来!

关于r - 在一个数据框列中使用多个时区,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/71612400/

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