R ymd_hms 函数不转换特定日期

R ymd_hms function not converting specific date

我是 R 的新手,所以也许我的问题从一开始就不清楚,但是我在使用 R 中 lubridate 包的 ymd_hms 函数时遇到了问题。我正在尝试测试dygraph 的功能。我有一个大的温度值数据集,间隔为一小时。有一个特定的时间戳似乎会造成问题,即:2017/3/26 02:00:00

这是向您展示的数据集示例(称为 "weerdata.csv"):

Meetdatum,Temperatuur 2017/3/26 01:00:00,11.10 2017/3/26 02:00:00,13.70 2017/3/26 03:00:00,14.90 2017/3/26 04:00:00,16.30

这是我在 R 控制台中执行的代码:

weerdata <- read.csv("F:/_data/gegevensverwerking/R/TESTSR/data/weerdata.csv") weerdata$Meetdatum<- ymd_hms(weerdata$Meetdatum,tz=Sys.timezone()) time_series <- xts(weerdata, order.by = weerdata$Meetdatum) dygraph(time_series) %>% dyRangeSelector()

我收到的错误是: Error in xts::periodicity(data) : can not calculate periodicity of 1 observation

问题是2017/3/26 02:00:00用ymd_hms函数转为NULL。使用例如此数据集时不会发生此问题:

Meetdatum,Temperatuur 2017/3/26 11:00:00,11.10 2017/3/26 12:00:00,13.70 2017/3/26 13:00:00,14.90 2017/3/26 14:00:00,16.30

我的数据集中有从 2017/1/1 01:00:00 到 2017/5/28 09:00:00 的温度值,唯一有问题的是 2017/3/ 26 02:00:00.

有人有想法吗?

非常感谢您。

比利时斯蒂恩

这种类型的问题每隔一段时间就会出现一次,但我没有时间找到重复的问题。

很可能这与夏令时有关:在你的时区,02:00小时不存在:"spring forward"。看一个简单的例子:

R> library(anytime)
R> anytime(paste("2017/03/26", c("01:00", "02:00", "03:00", "04:00")))  # Europe 
[1] "2017-03-26 01:00:00 CDT" "2017-03-26 02:00:00 CDT" 
[3] "2017-03-26 03:00:00 CDT" "2017-03-26 04:00:00 CDT"
R> anytime(paste("2017/03/12", c("01:00", "02:00", "03:00", "04:00")))  # US 
[1] "2017-03-12 01:00:00 CST" "2017-03-12 01:00:00 CST" 
[3] "2017-03-12 03:00:00 CDT" "2017-03-12 04:00:00 CDT"
R> 

看看我(在中部时间)如何得到 01:00 两次?