我建议您合并它们,然后聚合它们(本质上对每个唯一的执行 SUMDate
).
df <- merge(z.days,obs.days, by.x="Date", by.y="Date", all.x=TRUE)
Date Count
1 2012-01-01 NA
2 2012-01-02 1
3 2012-01-03 1
4 2012-01-03 1
5 2012-01-04 NA
现在要进行合并,您可以使用aggregate
:
df2 <- aggregate(df$Count,list(df$Date),sum)
Group.1 x
1 2012-01-01 NA
2 2012-01-02 1
3 2012-01-03 2
4 2012-01-04 NA
names(df2)<-names(df)
但我推荐包plyr
,太棒了!特别是,功能ddply
.
library(plyr)
ddply(df,.(Date),function(x) data.frame(Date=x$Date[1],Count=sum(x$Count)))
Date Count
1 2012-01-01 NA
2 2012-01-02 1
3 2012-01-03 2
4 2012-01-04 NA
命令ddply(df,.(Date),FUN)
本质上是:
for each date in unique(df$Date):
add to output dataframe FUN( df[df$Date==date,] )
因此,我提供的函数创建了一个包含列的一行数据框Date
and Count
,是该日期所有计数的总和。