Как уже указывалось, as.Date(as.character(t), "%Y")
неверно, так как не дает желаемого месяца и дня. Если бы мы хотели преобразовать годы в "Date"
класс, мы могли бы сделать это as.Date(as.yearmon(t))
, используя zoo's as.yearmon
; однако тогда у нас возникнет еще одна проблема, заключающаяся в том, что разные годы имеют разное количество дней, поэтому регулярный ряд, использующий даты для представления лет, невозможен.
На самом деле мы не хотим, чтобы даты вообще были. Мы просто хотим работать с годами, в этом случае это упрощается до:
> z <- zoo(c(1, 3, 6), c(1981, 1984, 1985))
>
> as.ts(z)
Time Series:
Start = 1981
End = 1985
Frequency = 1
[1] 1 NA NA 3 6
или, если мы хотим быть в безопасности, мы могли бы сделать это, чтобы сделать его ежегодным, даже если входные данные имеют более низкую частоту: frequency(z) <- 1; as.ts(z)
или просто определить исходную серию зоопарка, имеющую частоту 1 с самого начала:
> z <- zoo(c(1, 3, 6), c(1981, 1984, 1985), frequency = 1)
> as.ts(z)
Time Series:
Start = 1981
End = 1985
Frequency = 1
[1] 1 NA NA 3 6
В этом примере это не имеет значения, но в этом случае z <- zoo(c(1, 3, 6), c(1981, 1983, 1985), frequency = 1)
потребуется явный frequency
, чтобы предотвратить частоту 0.5
.