【发布时间】:2013-02-24 00:19:33
【问题描述】:
我正在使用 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”,并为每个日期赋予 9 的 nrow 值。没有人能提出一种优雅的方式来执行此操作任务。
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 中。
【问题讨论】:
-
能否提供样本
df让我有时间自己构建数据?
标签: r