Я пытаюсь интерполировать это meterValue, полный CSV здесь: https://drive.google.com/open?id=18cwtw-chAB-FqqCesXZJ-6NB6eHFJlgQ
localminute,dataid,meter_value
2015-10-03 09:51:53,6578,157806
2015-10-13 13:41:49,6578,158086
:
:
2016-01-17 16:00:33,6578,164544 #end of meter_value data for ID=6578
В зависимости от того, что @G.Гротендик предложил, и я получил ошибку в z.interpolate (объединение данных)
D6578z <- read.csv.zoo("test_6578.csv")[,2]
D6578zd <- to.daily(D6578z)[,4]
#Warning messages:
#1: In zoo(xx, order.by = index(x), ...) : some methods for “zoo” objects do not work if the index entries in ‘order.by’ are not unique
#2: In zoo(rval, index(x)[i]) :some methods for “zoo” objects do not work if the index entries in ‘order.by’ are not unique
test_6578t <- time(D6578zd)
plot(D6578zd,type="p",xaxt="n", pch=19, col="blue",cex=1.5)
diff(test_6578t)
t.daily6578 <- seq(from =min(test_6578t),to=max(test_6578t),by="1 day")
dummy6578 <- zoo(,t.daily6578)
z.interpolated <- merge(D6578zd,dummy6578,all=TRUE)
*#Error in merge.zoo(D6578zd, dummy6578, all = TRUE) : series cannot be merged with non-unique index entries in a series*
Решение кода R для разницы времени в один час в интерполированных данных, предоставленных @G.Гротендик, как показано ниже.
Привет, @G.Grothendieck, спасибо за код решения.У меня есть несколько вопросов, чтобы уточнить с вами относительно вашего кода.
`line1: to.hour <- function(x) as.POSIXct(trunc(as.POSIXct(x, origin = "1970-01-01"), "hour"))
line2: z <- read.csv.zoo("test_6578.csv", FUN = to.hour, aggregate = function(x) tail(x, 1))`
`line3: zz <- na.approx(as.zoo(as.ts(z)))`
`line4: time(zz) <- as.POSIXct(time(zz), origin = "1970-01-01")`
в строке 1, почему «as.POSIXct» перед `trunc (as.POSIXct (x, origin =” 1970-01-01 ”)?
Я понимаю, что" trunc«Функция округляет значение datetime.
В строке 2, что означает этот код« FUN = to.hour, aggregate = function (x) tail (x, 1) »?
Поскольку я не мог понять, что такое tail (x, 1). Я извлек функцию z
в файле csv, я заметил, что только столбцы dataid и meter_value генерируются при использовании функции read.csv.zoo.
В строке 3 я понимаю, что функция zz
выдает интерполированные данные, но я не совсем понял код «na.approx (as.zoo (as.ts (z))))», поскольку z
уже серия zoo после read.csv.zoo, почему мы все еще должны использовать «as.zoo» и «as.ts» в строке «na.approx»?
в чем разница между сериями zoo и zooreg?
В строке 4 «время (zz)» является индексом функции «zz»?
Заранее благодарим вас за объяснение.
Я могуld построим интерполированные данные с разницей во времени = 1 час