In R I frequently aggregate daily data (in a zoo) by month, using something like this:
zoo
result <- aggregate(x, as.yearmon, \"mean\", na.rm=TRUE)
The easiest thing to do is to use the apply.weekly function from xts.
apply.weekly
xts
> apply.weekly(zoo(1:10, as.Date("2010-01-01") + 1:10), mean) 2010-01-03 2010-01-10 2010-01-11 3 42 10