R ymd_hms函数不转换特定日期

时间:2017-06-13 12:17:33

标签: r date lubridate

我对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。

有没有人有想法?

非常感谢你。

比利时Stijn

1 个答案:

答案 0 :(得分:0)

这种类型的问题偶尔会出现,但我没有时间找到重复的问题。

很可能这与夏令时有关:在你的时区,02:00小时不存在:“向前冲”。请参见快速插图:

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的?