gpt4 book ai didi

r - 在 R 中处理东部标准时间 (EST) 和东部夏令时 (EDT)

转载 作者:行者123 更新时间:2023-12-04 17:32:57 24 4
gpt4 key购买 nike

我有一系列来自水质连续监测探头的数据集,日期和时间设置为东部标准时间 (EST),因此没有更正夏令时 (EDT)。在 R 中,当从 MS Access 数据库导入数据表时,这些字段被识别为因素,但是当使用 as.POSIXct() 转换时,从 2016 年 3 月 13 日 02:00(24 时钟)开始的日期和时间将成为 NA。这是由于从 EST 过渡到 EDT...因此从技术上讲 2016-03-13 02:00 不存在。

以一些创建的数据为例
test<-data.frame(Date=rep(as.Date("2016-03-13"),120),Hour=rep(seq(0,23,1),5),Min=rep(seq(0,60,15),24))
有没有办法在保留 EST 时区指定的同时将因子或字符字段转换为 POSIXct 字段?或者,有没有办法识别正确的日期和时间并将其转换为 EST 和 EDT?

我四处走动,却什么也做不了。我试图转换为 GMT(或 UTC),然后转换回 EST(tz="America/New_York")。我意识到这是一个持续存在的问题,处理日期和时间数据的人,尤其是在 R 中工作的人希望远离 EDT。

任何帮助表示赞赏......我在这个问题上不知所措。

最佳答案

使用 POSIX 的麻烦 tz = "America/New_York"是否考虑了夏令时(UTC-4 或 UTC-5),即使基础时间戳存储在美国东部标准时间 (UTC-5) 中。

您应该可以将您的 tz 指定为 Etc/GMT+5 .从那里,很容易在 EST、东部本地时间和 GMT 之间转换。请注意,在 R 中,UTC 以西的时区用正偏移量表示(请参阅 ?timezone 中的时区名称文档)。

以下是一些示例数据(夏令时于 2016 年 3 月 16 日东部时间凌晨 2:00 生效):

StartTime=as.numeric(as.POSIXct("2016-03-11 0:00:00",format="%Y-%m-%d %H:%M",origin="1970-01-01",tz="Etc/GMT+5"))
EndTime=as.numeric(as.POSIXct("2016-03-15 0:00:00",format="%Y-%m-%d %H:%M",origin="1970-01-01",tz="Etc/GMT+5"))

Interval=15*60 #15-min
data.EST=as.POSIXct(seq(from = StartTime,to = EndTime, by=Interval),origin="1970-01-01",tz="Etc/GMT+5") #generate date stamps

# convert Eastern Standard Time (in R: GMT+5) to local time (accounts for daylight savings):
data.EastCoast<- format(data.EST, tz="America/New_York")

# convert Eastern Standard Time (in R: GMT+5) to UTC/GMT:
data.UTC<- format(data.EST, tz="GMT")

compare.times<-data.frame(data.EST,data.EastCoast,data.UTC)

compare.times[(198:203),]

data.EST data.EastCoast data.UTC
198 2016-03-13 01:15:00 2016-03-13 01:15:00 2016-03-13 06:15:00
199 2016-03-13 01:30:00 2016-03-13 01:30:00 2016-03-13 06:30:00
200 2016-03-13 01:45:00 2016-03-13 01:45:00 2016-03-13 06:45:00
201 2016-03-13 02:00:00 2016-03-13 03:00:00 2016-03-13 07:00:00
202 2016-03-13 02:15:00 2016-03-13 03:15:00 2016-03-13 07:15:00
203 2016-03-13 02:30:00 2016-03-13 03:30:00 2016-03-13 07:30:00

祝你好运!

关于r - 在 R 中处理东部标准时间 (EST) 和东部夏令时 (EDT),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37053620/

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