block averaging data frames
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.