Формат ввода в объект TS в R - PullRequest
0 голосов
/ 25 февраля 2020

У меня есть некоторые данные со столбцом времени, выраженным в week.year, и соответствующей единицей, которая была измерена на этой неделе.

    Week-Year             Units
    01.2020             39.12727273
    02.2020             33.34545455
    03.2020             118.7181818
    04.2020             83.71818182
    05.2020             58.56985
    .                    .
    52.2020             89.54651534

Мне нужно создать объект ts , который будет принимать эти значения недельного года в качестве входных данных. Причина, по которой требуется этот шаг, заключается в том, что иногда для некоторых недель отсутствуют значения, поэтому использование автоматически сгенерированной шкалы времени (начало =, конец =, частота =) может испортить показания. Есть ли способ достичь этого? или есть ли способ приспособиться к такой ситуации? Новичок здесь, был бы очень признателен за некоторые рекомендации. :)

1 Ответ

0 голосов
/ 25 февраля 2020

Предполагая, что вводом является кадр данных DF, воспроизводимый в конце заметки, преобразуйте его в объект зоопарка, а затем используйте as.ts для создания серии ts с частотой 52.

library(zoo)

week <- as.integer(DF[[1]])
year <- as.numeric(sub("...", "", DF[[1]]))
z <- zoo(DF[[2]], year + (week - 1) / 52)
tt <- as.ts(z)

tt
## Time Series:
## Start = c(2020, 1) 
## End = c(2020, 52) 
## Frequency = 52 
##  [1]  39.12727  33.34545 118.71818  83.71818  58.56985        NA        NA
##  [8]        NA        NA        NA        NA        NA        NA        NA
## [15]        NA        NA        NA        NA        NA        NA        NA
## [22]        NA        NA        NA        NA        NA        NA        NA
## [29]        NA        NA        NA        NA        NA        NA        NA
## [36]        NA        NA        NA        NA        NA        NA        NA
## [43]        NA        NA        NA        NA        NA        NA        NA
## [50]        NA        NA  89.54652

frequency(tt)
## [1] 52

class(tt)
## [1] "ts"

Примечание

Lines <- "    Week-Year             Units
    01.2020             39.12727273
    02.2020             33.34545455
    03.2020             118.7181818
    04.2020             83.71818182
    05.2020             58.56985
    52.2020             89.54651534"
DF <- read.table(text = Lines, header = TRUE, colClasses = c("character", NA))
...