插入每门课程的缺失日期

时间:2015-12-22 07:40:56

标签: r

我的数据如下:

row  courseid  date           V1          V2
456     5031 2011-07-15       50           1
457     5031 2011-07-16       50           1
458     5031 2011-07-18        0           0
459     5031 2011-07-19        0           0
460     5031 2011-07-20        0           0
461     5031 2011-07-21        0           0
485     5052 2011-06-30        0           0
486     5052 2011-07-01        0           0
487     5052 2011-07-02        0           0
488     5052 2011-07-03        0           0

对于每个courseid值,我需要在V2上使用rle(),但是,只有每个courseid的日期是连续的才有意义。但在上面的例子中,您将看到,对于courseid = 5031,缺少2011-07-17的日期。如何为每个courseid在上面的数据集中插入缺少日期,V1 = 0和V2 = 0?

我发现我可以使用以下代码找到每个courseid的第一个和最后一个日期:

c <- unique(t$courseid)
test <- sapply (c, function (y) {
  return (range(t$date[t$courseid==y]))
})
c2 <- as.data.frame(cbind (c,test[1,],test[2,]))
names(c2) = c("courseid","first","last")

所以,我的想法是将c2转换为(courseid,date)矩阵,每个courseid的所有日期都在第一个和最后一个之间,然后使用merge。有人知道怎么做,或者知道另一种方法吗?

0 个答案:

没有答案