在我的数据中,对于某些ID,在某些月份存在观测值,而在其他月份不存在,例如:
dat <- data.frame(c(1, 1, 1, 2, 3, 3, 3, 4, 4, 4), c(rep(30, 2), rep(25, 5), rep(20, 3)), c('2017-01-01', '2017-02-01', '2017-04-01', '2017-02-01', '2017-01-01', '2017-02-01', '2017-03-01', '2017-01-01',
'2017-02-01', '2017-04-01'))
colnames(dat) <- c('id', 'value', 'date')
我希望能为每个id
值插入一行,其中包括该id
缺失的月份和value
的NA
值。
是否有一种方法可以(比较)简洁地对seq(min(as.Date(dat$date)),max(as.Date(dat$date)),by ='months')
中的所有月份执行此操作? 我经常使用tidyverse和data.table,但也可以使用其他方法。