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.br...@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@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.

______________________________________________
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.

Reply via email to