Does this work for you:
> x <- read.table(text = " date time Voltage LwTempDownelling
LwDownwelling LwDownwelling_min LwDownwelling_max LwTempUpwelling
+ 1 2011-11-01 00:00:00 2.732447 17.30 30.0
14.0 39.5 17.83
+ 2 2011-11-01 00:10:00 2.731534 17.46 15.3
11.1 24.6 17.95
+ 3 2011-11-01 00:20:00 2.731368 17.43 28.7
24.6 30.7 17.93
+ 4 2011-11-01 00:30:00 2.730703 17.36 40.4
29.8 43.5 17.86
+ 5 2011-11-01 00:40:00 2.729567 17.26 41.6
40.5 42.6 17.76"
+ , header = TRUE
+ )> # convert the time
> x$timestamp <- as.POSIXct(paste(x$date, x$time))
> # calculate the start of time ranges
> start <- trunc(min(x$timestamp), units = 'hour')
> # create breakpoints at 30 minutes
> breaks <- seq(from = start
+ , to = max(x$timestamp) + 3600 # make sure you have the
last range
+ , by = '30 min'
+ )> # slice up the data by adding index
> x$interval <- findInterval(x$timestamp, breaks)
>
> # determine colMeans
> newData <- do.call(rbind, tapply(x[4:8], x$interval, colMeans))
> newData <- as.data.frame(newData)
>
> # add the time back
> newData$timestamp <- breaks[as.integer(rownames(newData))]
> newData
LwTempDownelling LwDownwelling LwDownwelling_min LwDownwelling_max
LwTempUpwelling
1 17.39667 24.66667 16.56667 31.60
17.90333
2 17.31000 41.00000 35.15000 43.05
17.81000
timestamp
1 2011-11-01 00:00:00
2 2011-11-01 00:30:00>
>
On Mon, Dec 19, 2011 at 4:28 AM, Mathew Brown
<mathew.brown at forst.uni-goettingen.de> wrote:>
>
> Hi there,
>
> This seems like it should be simple. I have a data frame of climate data
> sampled every 10 min. I want to average the entire data frame into 30
> min values (i.e., one value for each half hour). ?Functions like
> running.mean give me a moving average but I want to reduce the size of
> the entire frame.. Any ideas how? Cheers!
>
> Example of my data
>
> ?timestamp ?Voltage LwTempDownelling LwDownwelling LwDownwelling_min
LwDownwelling_max LwTempUpwelling
> 1 2011-11-01 00:00:00 2.732447 ? ? ? ? ? ?17.30 ? ? ? ? ?30.0 ? ? ? ? ? ?
?14.0 ? ? ? ? ? ? ?39.5 ? ? ? ? ? 17.83
> 2 2011-11-01 00:10:00 2.731534 ? ? ? ? ? ?17.46 ? ? ? ? ?15.3 ? ? ? ? ? ?
?11.1 ? ? ? ? ? ? ?24.6 ? ? ? ? ? 17.95
> 3 2011-11-01 00:20:00 2.731368 ? ? ? ? ? ?17.43 ? ? ? ? ?28.7 ? ? ? ? ? ?
?24.6 ? ? ? ? ? ? ?30.7 ? ? ? ? ? 17.93
> 4 2011-11-01 00:30:00 2.730703 ? ? ? ? ? ?17.36 ? ? ? ? ?40.4 ? ? ? ? ? ?
?29.8 ? ? ? ? ? ? ?43.5 ? ? ? ? ? 17.86
> 5 2011-11-01 00:40:00 2.729567 ? ? ? ? ? ?17.26 ? ? ? ? ?41.6 ? ? ? ? ? ?
?40.5 ? ? ? ? ? ? ?42.6 ? ? ? ? ? 17.76
> 6 2011-11-01 00:50:00 2.728976 ? ? ? ? ? ?17.16 ? ? ? ? ?39.7
>
>
> -M.B
>
>
> ? ? ? ?[[alternative HTML version deleted]]
>
> ______________________________________________
> 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
Data Munger Guru
What is the problem that you are trying to solve?
Tell me what you want to do, not how you want to do it.