Как НАЙТИ пропущенные наблюдения в пределах временного ряда и заполнить NA

У меня есть 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 ответ

Решение

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

rng <- range(DF$date)
g <- data.frame(date = seq(rng[1], rng[2], "day"))
merge(DF, g, all = TRUE)
Другие вопросы по тегам