我对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
答案 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的?