This suggest that most of the time is spend on reading data from disk.
It could be more efficient to do this in one step.
m <- .colMeans(getValues(cmip), nrow(cmip), ncol(cmip), na.rm=FALSE)
I do not think there is much more you can do beyond that --- although
a solid state hard disk could help.
( I am guessing that na.rm=FALSE is tiny bit faster, and that you do
not need it to be TRUE. )
Robert
On Tue, May 5, 2015 at 6:48 PM, Thiago V. dos Santos
<thi_veloso at yahoo.com.br> wrote:
Hi all,
I am working with some terabytes of CMIP5 climate files. Each file is a
netcdf with multiple layers (timesteps) representing monthly data.
For each file, I need to extract the average value of the raster and put
all values in a data frame. This is my current approach:---------------
library(raster)
# make up some datacmip <- brick(nc=150, nr=114, nl=1872)cmip <-
setValues(cmip, matrix(rep(1:17100, 1872), nc=1872))
# get mean values (area average) as data framescmip.mean <-
as.data.frame(cellStats(cmip, mean, na.rm=T))---------------
which works pretty fast in this example:
system.time(as.data.frame(cellStats(cmip, mean, na.rm=T)))
user system elapsed
0.069 0.012 0.081
However, the calculation with my actual data is substantially slower:
system.time(as.data.frame(cellStats(cmip, mean, na.rm=T)))
user system elapsed
4.600 1.105 5.704
Since I will have to deal with thousands of files, here comes my
question: is there a faster way to get a the average value of a raster ?
Many thanks,
--
Thiago V. dos Santos
PhD student
Land and Atmospheric Science
University of Minnesota
Phone: (612) 323 9898
[[alternative HTML version deleted]]