我正在使用 plyr 包中的 ddply 按日期获取行数。但是,当有没有值的日期时,它们会被忽略,我最终会得到一个数据框,其中某些日期不存在。我正在使用 ddply 生成的值来生成绘图,并想找到如何包含所有不存在的日期,并将它们的 nrow 值设为 0。
library(plyr)
f = ddply(df, .(created), "nrow")
f = as.data.frame(f)
> head(f)
created nrow
1 2009-12-29 2
2 2009-12-30 3
3 2010-01-06 1
4 2010-01-07 2
5 2010-01-08 2
6 2010-01-11 1
为了正确构建线图,我想要所有日期(那些具有 0 nrow 值的日期)。因此,在上述部分中,我想将所有缺失的日期(例如 '2010-01-01' 到 '2010-01-05' )添加到 '2010-01-05' 并给每个 nrow 值 9。没有人能提出一种优雅的方式来执行此操作任务。
ggplot(f, aes(x=created, y=nrow)) +
geom_line(size=0.6, color="darkgreen") +
labs(title="Plot") +
theme(axis.text.y=element_text(family="sans", face="bold"),
axis.text.x=element_text(family="sans", face="bold"))
我以为 ddply 中的 .drop 命令执行了这个任务,但它似乎没有这样做。
编辑:
样本数据。
mdf=data.frame(created=c('2009-12-29','2009-12-30','2010-01-06','2010-01-07',
'2010-01-08','2010-01-11','2009-12-29','2009-12-30'))
ddply(mdf, .(created), .drop=FALSE, "nrow")
created nrow
1 2009-12-29 2
2 2009-12-30 2
3 2010-01-06 1
4 2010-01-07 1
5 2010-01-08 1
6 2010-01-11 1
如何将“2010-01-01”、“2010-01-02”等包含在 nrow 的 0 值中。