我的数据如下:
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。有人知道怎么做,或者知道另一种方法吗?