r语言 - 如何将 NA 添加到某些日期不可用的数据中?



我有一个短期电力负荷预测的数据。我必须清理数据,在没有数据的日期(和块)的数据中添加NA。例如:第一种情况:缺少一些日期:

         data<-data.frame(date=c("2014-01-01","2014-01-02","2014-01-04"),value=c(1,2,3))

请注意,缺少2014-01-03。所以我想添加一行这个日期和NA对应的列这个日期。

所需的输出数据为:

        out_data<-data.frame(date=c("2014-01-01","2014-01-02","2014-01-03","2014-01-04"),value=c(1,2,NA,3))

第二种情况:日期缺少一些区块:

1,2,3,4,5,7,9,10

请注意,缺少6,8个块。因此,我想为这些块(6,8)添加一行,以及与这些块的列相对应的NA。

第一个问题是如何找出遗漏的日期和区块。一旦学会了如何添加NA如上所述。我正试图使用循环来实现这一点,但如果有人有更好的方法或知道一些有效的包,请提供帮助。

编辑-我使用的软件是R

感谢

没有一个可复制的例子很难知道,但我尝试了一下:

案例1

让我们创建一些伪数据:

days <- c(1,2,4:6,9)
yourDates <- as.Date(paste(2014, 1, days, sep = "-"))
set.seed(111)
data <- data.frame(date= yourDates, col1 = rnorm(6), col2 = sample(letters, 6))

指定所需的最后日期:

enddate <- max(data$date) 

为丢失的日期创建一个带有NA的新数据帧:

df  <-  merge(data, data.frame(date = seq(min(yourDates),
              as.Date(enddate), 1)), all.y = T)
# if you want to replace the dates where you have no records with NA: 
df$date[!df$date %in% yourDates]  <-  NA

案例2

根据日期和区块创建完整数据:

data2  <- expand.grid(block = 1:10, date = yourDates)

有间隙的数据(块6、8从第一个日期开始就丢失了,其他一些也丢失了):

data2.gaps  <- data2[-c(6,8, 15, 29),]
# and put NAs where block is missing:
data2$block  <- data2.gaps$block[match(interaction(data2$block, data2$date), 
                                       interaction(data2.gaps$block, data2.gaps$date))]

最新更新