Я бы посоветовал вам объединить их, а затем объединить их (по сути, выполнить СУММУ для каждого уникального Date
).
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
и Count
, представляющими собой сумму всех подсчетов на эту дату.