更改时间序列缺失值的绘图
Changing plotting of missing values of time series
我有以下时间序列:
Lines <- "Hour,PF
0,14/01/2015 00:00,0.305
1,14/01/2015 01:00,0.306
2,14/01/2015 02:00,0.307
3,14/01/2015 03:00,0.3081
4,14/01/2015 04:00,0.3091
5,14/01/2015 05:00,0.3101
6,14/01/2015 06:00,0.3111
7,14/01/2015 07:00,0.3122
8,14/01/2015 08:00,0.455
9,14/01/2015 09:00,0.7103
10,14/01/2015 10:00,0.9656
11,14/01/2015 11:00,1
12,15/01/2015 12:00,0.9738
13,15/01/2015 13:00,0.9476
14,15/01/2015 14:00,0.9213
15,15/01/2015 15:00,0.8951
16,15/01/2015 16:00,0.8689
17,15/01/2015 17:00,0.8427
18,15/01/2015 18:00,0.6956
19,15/01/2015 19:00,0.6006
20,15/01/2015 20:00,0.5056
21,15/01/2015 21:00,0.4106
22,15/01/2015 22:00,0.3157
23,15/01/2015 23:00,0.3157"
library (zoo)
library (strucchange)
z <- read.zoo(text = Lines, tz = "", format = "%d/%m/%Y %H:%M", sep = ",")
可以看到观察12到13之间有24小时的间隔。
当我绘制时间序列时:
plot(z)
我在图表的间隙处得到常数值。
例如,我想将缺失值之间的绘图线更改为 0。我该怎么做?
您可以像这样将间隙限制设置为 0:
istart <- index(z[diff(index(z))>1])
iend <- index(z[ which( diff(index(z))>1 ) +1 ])
z[istart+3600] <- rep(0, times=length(istart))
z[iend-3600] <- rep(0, times=length(iend))
我有以下时间序列:
Lines <- "Hour,PF
0,14/01/2015 00:00,0.305
1,14/01/2015 01:00,0.306
2,14/01/2015 02:00,0.307
3,14/01/2015 03:00,0.3081
4,14/01/2015 04:00,0.3091
5,14/01/2015 05:00,0.3101
6,14/01/2015 06:00,0.3111
7,14/01/2015 07:00,0.3122
8,14/01/2015 08:00,0.455
9,14/01/2015 09:00,0.7103
10,14/01/2015 10:00,0.9656
11,14/01/2015 11:00,1
12,15/01/2015 12:00,0.9738
13,15/01/2015 13:00,0.9476
14,15/01/2015 14:00,0.9213
15,15/01/2015 15:00,0.8951
16,15/01/2015 16:00,0.8689
17,15/01/2015 17:00,0.8427
18,15/01/2015 18:00,0.6956
19,15/01/2015 19:00,0.6006
20,15/01/2015 20:00,0.5056
21,15/01/2015 21:00,0.4106
22,15/01/2015 22:00,0.3157
23,15/01/2015 23:00,0.3157"
library (zoo)
library (strucchange)
z <- read.zoo(text = Lines, tz = "", format = "%d/%m/%Y %H:%M", sep = ",")
可以看到观察12到13之间有24小时的间隔。 当我绘制时间序列时:
plot(z)
我在图表的间隙处得到常数值。 例如,我想将缺失值之间的绘图线更改为 0。我该怎么做?
您可以像这样将间隙限制设置为 0:
istart <- index(z[diff(index(z))>1])
iend <- index(z[ which( diff(index(z))>1 ) +1 ])
z[istart+3600] <- rep(0, times=length(istart))
z[iend-3600] <- rep(0, times=length(iend))