How to fill (date-) gaps in data.frame?

前端 未结 1 1156
旧巷少年郎
旧巷少年郎 2021-02-14 14:33

I have a data.frame with a date-column. These dates can occur many times, but also zero-time:

        date value
1 2013-01-01     5
2 2013-01-01     3
3 2013-01-         


        
相关标签:
1条回答
  • 2021-02-14 15:13

    You can merge your data.frame with another data.frame containg all the dates in sequence. here I assume that dat is your original data.frame.

    hh<- data.frame(date=seq(as.Date("2013-01-01"), as.Date("2013-01-6"), by="days"))
    >res <- merge(dat,hh,by.x='date',by.y='date',all.x=T,all.y=T)
            date value
    1 2013-01-01     5
    2 2013-01-01     3
    3 2013-01-02    NA
    4 2013-01-03     3
    5 2013-01-04     3
    6 2013-01-04     1
    7 2013-01-05    NA
    8 2013-01-06     1
    

    Now we have NA for each row in dat that has no matching row in hh. Personaly, I think it is better to have NA to say that theses are missing values But you can set them to 0:

    res$value[is.na(res$value)] <- 0
    

    Edit

    for generality you can generate hh as shown in @Arun solution:

          hh <- seq(min(dat$date), max(dat$date), by="days")
    
    0 讨论(0)
提交回复
热议问题