我有一个带有日期列的数据框。这些日期可以出现多次,但也可以出现零次:
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
如何填充此 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
欢迎任何帮助。
TIA,
杰瑞
You can 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
现在,dat 中的每一行在 hh 中没有匹配的行,我们得到 NA。就我个人而言,我认为最好用 NA 来表示这些缺少值,但你可以将它们设置为 0:
res$value[is.na(res$value)] <- 0
Edit
出于一般性,您可以生成 hh,如 @Arun 解决方案所示:
hh <- seq(min(dat$date), max(dat$date), by="days")
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)