Hi,
I reworked your example a bit so that it encompasses just one year, and the value of each layer is the month number for the Z index. Sure enough, the mean month number values look like they are mismatched relative to the layer name. Example below - sorry about line-wrapping. Uhoh.
Cheers,
Ben
library(raster)
# Create date sequence
idx <- seq(as.Date("1996/1/1"), as.Date("1996/12/31"), by = "day")
mon_num <- as.numeric(format(idx, "%m"))
# Create raster stack and assign dates
r <- raster(ncol=5, nrow=5)
s <- stack(
lapply(1:length(idx),
function(x) setValues(r, rep(mon_num[x],ncell(r)))
)
)
s <- setZ(s, idx)
# Calculate monthly average
x <- zApply(s, by=months, mean, name=month.abb[])
x
# class : RasterBrick
# dimensions : 5, 5, 25, 12 (nrow, ncol, ncell, nlayers)
# resolution : 72, 36 (x, y)
# extent : -180, 180, -90, 90 (xmin, xmax, ymin, ymax)
# coord. ref. : +proj=longlat +datum=WGS84 +ellps=WGS84 +towgs84=0,0,0
# data source : in memory
# names : April, August, December, February, January, July, June, March, May, November, October, September
# min values : 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12
# max values : 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12
sessionInfo()
R version 3.3.1 (2016-06-21)
Platform: x86_64-apple-darwin13.4.0 (64-bit)
Running under: OS X 10.11.6 (El Capitan)
locale:
[1] en_US.UTF-8/en_US.UTF-8/en_US.UTF-8/C/en_US.UTF-8/en_US.UTF-8
attached base packages:
[1] stats graphics grDevices utils datasets methods base
other attached packages:
[1] raster_2.5-8 sp_1.2-3
loaded via a namespace (and not attached):
[1] rgdal_1.1-10 Rcpp_0.12.6 grid_3.3.1 lattice_0.20-33
On Jul 29, 2016, at 3:20 PM, Thiago V. dos Santos via R-sig-Geo <r-sig-geo at r-project.org> wrote:
Thanks everyone for their suggestions.
Reordering the output of zApply would be a WRONG solution, because the layers are already ordered from Jan to Dec.
It is just the NAMES that are misaligned, which can cause a bit of confusion.
I already contacted Robert about this issue and we should see a solution soon.
Greetings,
-- Thiago V. dos Santos
PhD student
Land and Atmospheric Science
University of Minnesota
On Friday, July 29, 2016 2:09 PM, Kay Kilpatrick <kkilpatrick at rsmas.miami.edu> wrote:
Hi
The various Apply functions always return the output in simple
alphabetical order when the factor label is a character, regardless of
the order of the factor in the calling argument.
Ben had a correct solution --- simply reorder the output from Zapply.
Alternatively you could use a numeric representation for the month label
using by = as.numeric(months(x). The output would then be in increasing
numeric order from 1 -12.
I do not believe Vijay's suggestion is proper. It does not reorder the
output --- instead it changes the label of a given monthly mean eg. The
value for Jan. would then be labeled as Apr.
k
On 7/28/16 10:52 PM, Thiago V. dos Santos via R-sig-Geo wrote:
Dear all,
I am using the raster package to calculate monthly averages of climatic variables.
Essentially, this is the function I use:
library(raster)
# Create date sequence
idx <- seq(as.Date("1996/1/1"), as.Date("2010/12/31"), by = "day")
# Create raster stack and assign dates
r <- raster(ncol=5, nrow=5)
s <- stack(lapply(1:length(idx), function(x) setValues(r, runif(ncell(r)))))
s <- setZ(s, idx)
# Calculate monthly average
x <- zApply(s, by=months, mean, name=month.abb[])
names(x)
[1] "April" "August" "December" "February" "January" "July" "June"
[8] "March" "May" "November" "October" "September"
getZ(x)
[1] "April" "August" "December" "February" "January" "July" "June"
[8] "March" "May" "November" "October" "September"
The problem here is the output of both names(x) and getZ(x). It looks like a random month order is returned (even though I provide the labels), which makes me confused about the results.
By performing the same calculation in a different software and comparing the results, I came to realize that the order of months for the results by raster should, in fact, be Jan-Feb-Mar-Apr-May-Jun-Jul-Aug-Sep-Oct-Nov-Dec
How can I control the way raster delivers the object names after using zApply, in order to sort the months in the "natural" order?
Greetings, -- Thiago V. dos Santos
PhD student
Land and Atmospheric Science
University of Minnesota