我有一个带有日期列的data.frame.这些日期可以多次出现,但也可以是零时间:
date value
1 2013-01-01 5
2 2013-01-01 3
3 2013-01-03 3
4 2013-01-04 3
5 2013-01-04 1
6 2013-01-06 1
Run Code Online (Sandbox Code Playgroud)
如何填写此data.frame中的日期空白,以便我得到以下内容?
date value
1 2013-01-01 5
2 2013-01-01 3
3 2013-01-02 0
4 2013-01-03 3
5 2013-01-04 3
6 2013-01-04 1
7 2013-01-05 0
8 2013-01-06 1
Run Code Online (Sandbox Code Playgroud)
欢迎任何帮助.
TIA,Jerry
ags*_*udy 15
您可以merge将data.frame与另一个data.frame一起包含所有日期.在这里我假设dat是你原来的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
Run Code Online (Sandbox Code Playgroud)
现在我们为dat中的每一行都有NA,这些行中没有匹配的行.Personaly,我认为让NA说这些是缺少值更好但是你可以将它们设置为0:
res$value[is.na(res$value)] <- 0
Run Code Online (Sandbox Code Playgroud)
编辑
一般来说,你可以生成hh,如@Arun解决方案所示:
hh <- seq(min(dat$date), max(dat$date), by="days")
Run Code Online (Sandbox Code Playgroud)