Here is one way of doing it:
> x <- data.frame(dates=seq(as.POSIXct('2008-09-08'), by='7
hours', length=10),
+ values=1:10)> # split into days
> x.s <- split(x, format(x$dates, "%Y%m%d"))
> x.s
$`20080908`
dates values
1 2008-09-08 00:00:00 1
2 2008-09-08 07:00:00 2
3 2008-09-08 14:00:00 3
4 2008-09-08 21:00:00 4
$`20080909`
dates values
5 2008-09-09 04:00:00 5
6 2008-09-09 11:00:00 6
7 2008-09-09 18:00:00 7
$`20080910`
dates values
8 2008-09-10 01:00:00 8
9 2008-09-10 08:00:00 9
10 2008-09-10 15:00:00 10
> lapply(x.s, function(.df) mean(.df$values))
$`20080908`
[1] 2.5
$`20080909`
[1] 6
$`20080910`
[1] 9
>
On Tue, Sep 9, 2008 at 3:25 PM, Alexy Khrabrov <deliverable at gmail.com>
wrote:> Greetings -- I have a dataframe a with one element a vector, time, of
> POSIXct values. What's a good way to split the data frame into periods
of
> a$time, e.g. days, and apply a function, e.g. mean, to some other column of
> the dataframe, e.g. a$value?
>
> Cheers,
> Alexy
>
> ______________________________________________
> R-help at 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.
>
--
Jim Holtman
Cincinnati, OH
+1 513 646 9390
What is the problem that you are trying to solve?