我已經在1分鐘採樣率的時間序列數據,重新採樣數據沒有在所有的工作所需的時間率
library(xts)
#create timestamp with 1 mintue sampling rage
timerange <- seq(as.POSIXct("2016-06-09"),as.POSIXct("2016-06-22 23:59:59"), by = "1 min")
# create xts object
data_xts <- xts(rnorm(length(timerange),200,5),timerange)
現在產生的,我想重新取樣(其他城市的採樣率)到50分鐘。因此,我創建了一個自定義函數:
resample_data_minutely_daywise <- function(data_xts,xminutes) {
day_data <- split.xts(data_xts,"days",k=1) # divide data daywise
# Now resample data according to parameter xminutes
day_list <- lapply(day_data, function(x) {
ds_data <- period.apply(x,INDEX = endpoints(index(x), on = "minutes", k = xminutes), FUN= mean)
align_data <- align.time(ds_data,xminutes*60) # aligning to x seconds
return(align_data)
})
return(day_list)
}
此函數將時間序列數據和所需採樣頻率作爲輸入。接下來,它每天分割數據,最後每天通過平均值改變採樣。
現在,每當我把這個功能
p <- resample_data_minutely_daywise(data_xts,50)
sapply(p,length) # check no. of observations in each day
輸出是:
sapply(p,length) # check no. of observations in each day
[1] 30 30 30 29 29 30 30 30 29 29 30 30 30 29
這說明,不是每天都包含相同數量的讀數。幾天包含29個,一些包含30個觀察。什麼可能是這種未知行爲的原因。請注意,每當我在10秒重新取樣時,每天20,30,60分鐘包含相同數量的讀數。這個問題只發生在我嘗試50分鐘時。
50不會平均分配到每一天,所以一些obs。第二天開始,你減少1。 –
@StevenMortimer但我每天分開,然後嘗試以50分鐘的速度結合。 –
看看'p'。你的每一天都不是從00:00:00開始的。第二天的第一次觀察有時也包括在內。 – CPak