(1) мтс ts
объекты должны регулярно располагаться (т.е. одинаковое количество времени между каждой последовательной точкой) и не могут представлять даты (но мы можем использовать числа), поэтому мы предполагаем, чтоавгустовские даты должны были быть июльскими, поэтому у нас есть последовательные даты, и мы используем количество дней с начала эпохи (1 января 1970 г.) в качестве времени.
Добавьте порядковый номер, чтобы различать равные даты и разделитьряд в несколько столбцов:
library(zoo)
data3 <- transform(data2, seq = ave(1:nrow(data2), Date, FUN = seq_along))
z <- read.zoo(data3, index = "Date", split = "seq")
as.ts(z)
, дающий:
Time Series:
Start = 8590
End = 8592
Frequency = 1
1 2 3
8590 0.5 0.4 NA
8591 0.4 NA NA
8592 0.2 0.2 0.4
(2) среднее Поочередное усреднение значений в равные даты:
z2 <- read.zoo(data2, index = "Date", aggregate = mean)
as.ts(z2)
давая:
Time Series:
Start = 8590
End = 8592
Frequency = 1
[1] 0.4500000 0.4000000 0.2666667
(3) Игнорировать дату Мы могли бы проигнорировать столбец Дата (как было предложено на плакате), и в этом случае мы просто используем 1, 2, 3,... в качестве временного индекса:
ts(data$Oxygen)
(4) 1-ая точка каждого месяца Поскольку в комментарии автор указал, что существует много данных (20 лет), которые мыможет взять первую точку в каждом месяце, образуя месячный ряд.
as.ts(read.zoo(data, index = "Date", FUN = as.yearmon, aggregate = function(x) x[1]))
Примечание
AuguДаты были изменены на июль и теперь имеют вид data2
:
set.seed(1)
data2 <- data.frame(
Date = sample(c("1993-07-09", "1993-07-09", "1993-07-10",
"1993-07-11", "1993-07-11", "1993-07-11")),
Oxygen = sample(c(0.2, 0.4, 0.4, 0.2, 0.4, 0.5))
)
data2$Date <- as.Date(data$Date)