This is one way:

df<- data.frame(Time=as.POSIXct("2009-01-01", format="%Y-%m-%d") + seq(0, 60*60*24*365-1, 60*60),
                  lev.morgan=3+runif(24*365),
                  lev.lock2=3+runif(24*365),
                  flow=1000+rnorm(24*365, 200),
                  direction=runif(24*365, 0, 360),
                  velocity=runif(24*365, 0, 10))
(df2<- aggregate(df[ , -1], list(date=as.Date(df$Time)), FUN=mean, na.rm=TRUE))



Hope this helps

Allan


On 15/07/10 05:52, Meissner, Tony (DFW) wrote:
> I have a data frame (morgan) of hourly river flow, river levels and wind direction and speed thus:
>           Time           hour lev.morgan lev.lock2 lev.lock1 flow   direction  velocity
> 1  2009-07-06 15:00:00   15      3.266     3.274     3.240 1710.6   180.282    4.352
> 2  2009-07-06 16:00:00   16      3.268     3.272     3.240 1441.8   192.338    5.496
> 3  2009-07-06 17:00:00   17      3.268     3.271     3.240 1300.1   202.294    2.695
> 4  2009-07-06 18:00:00   18      3.267     3.274     3.241 1099.1   237.161    2.035
> 5  2009-07-06 19:00:00   19      3.265     3.277     3.243  986.6   237.576    0.896
> 6  2009-07-06 20:00:00   20      3.266     3.281     3.242 1237.6   205.686    1.257
> 7  2009-07-06 21:00:00   21      3.267     3.280     3.242 1513.3    26.080    0.664
> 8  2009-07-06 22:00:00   22      3.267     3.281     3.242 1819.5   264.280    0.646
> 9  2009-07-06 23:00:00   23      3.267     3.281     3.242 1954.4   337.137    0.952
> 10 2009-07-07 00:00:00    0      3.267     3.281     3.242 1518.9   260.006    0.562
> 11 2009-07-07 01:00:00    1      3.267     3.281     3.242 1082.6   252.172    0.673
> 12 2009-07-07 02:00:00    2      3.267     3.280     3.243 1215.9   190.007    1.286
> 13 2009-07-07 03:00:00    3      3.267     3.279     3.244 1093.5   260.415    1.206
> :         :               :       :               :          :     :        :         :
> :         :               :       :               :          :     :        :         :
>
> Time is of class POSIXct
> I wish to take daily means of the flow, levels, and wind parameters and put them into a new dataframe.  I envisage doing this with the following example code:
>
> morgan$fTime<- factor(substr(as.character(morgan$Time),1,10))
> dflow<- tapply(morgan[,"flow"], morgan$fTime, mean)
> day<- tapply(morgan[,"Time"], morgan$fTime, mean)
>    :
>    :
>
> daily<- as.data.frame(cbind(day,dflow, dlev.morg,dlev.lock2, ...))
> daily$day<- with(daily, as.POSIXct("1970-01-01", "%Y-%m-%d", tz="Australia/Adelaide") + day)
> rownames(daily)<- NULL
>
> Is there a more efficient way of doing this?  I am running R-2.11.0 under Windows XP
>
> Tschüß
> Tony Meissner
> Principal Scientist (Monitoring)
> Resources Monitoring Group
> Science, Monitoring and Information Division
> Department for Water
> "Imagine" ©
> *(ph) (08) 8595 2209
> *(mob) 0401 124 971
> *(fax) (08) 8595 2232
> * 28 Vaughan Terrace, Berri SA 5343
>          PO Box 240, Berri SA 5343
>          DX 51103
> ***The information in this e-mail may be confidential and/or legally privileged.  Use or disclosure of the information by anyone other than the intended recipient is prohibited and may be unlawful.  If you have received this e-mail in error, please advise by return e-mail or by telephoning +61 8 8595 2209
>
>
>
>
> 	[[alternative HTML version deleted]]
>
>    
>
>
> ______________________________________________
> R-help@r-project.org mailing list
> https://stat.ethz.ch/mailman/listinfo/r-help
> PLEASE do read the posting guide http://www.R-project.org/posting-guide.html
> and provide commented, minimal, self-contained, reproducible code.
>    

	[[alternative HTML version deleted]]

