Как найти пропущенные наблюдения в пределах временного ряда и заполнить NA - PullRequest
0 голосов
/ 10 декабря 2018

У меня есть 10-летний временной ряд, содержащий ежедневные наблюдения.Я обнаружил, что некоторые строки (целые строки, а не только наблюдения) из этой серии отсутствуют, что проблематично для моего варианта использования.Все даты приведены по порядку, но данный месяц может начинаться с (ymd) 2017-10-13 вместо 2017-10-01, поэтому пропущено 12 наблюдений.Мне нужно определить, где есть прерывания в последовательности, подобной этой, и вставить правильное количество строк с правильными датами, чтобы я мог иметь NA в этих местах.

Как я могу это сделать?

Вот воспроизводимый пример кадра данных, аналогичного моему, без 219 из 4018 наблюдений с отметкой даты:

df <- NULL
df$date <- seq(as.Date("2007/01/01"), as.Date("2017/12/31"), "days")
df$obs <- runif(4018)
df <- as.data.frame(df)
df_missing <- df[sample(1:nrow(df), 3799), ]

head(df_missing)
        date        obs
    1 2007-01-01 0.96428609
    2 2007-01-02 0.04199475
    3 2007-01-03 0.72729484
    4 2007-01-04 0.85591517
    5 2007-01-05 0.07373118
    6 2007-01-06 0.71093604

1 Ответ

0 голосов
/ 10 декабря 2018

Создайте фрейм данных с сеткой g всех дат и объедините его с вашим фреймом данных:

rng <- range(DF$date)
g <- data.frame(date = seq(rng[1], rng[2], "day"))
merge(DF, g, all = TRUE)
...