Hi Vijay, Whoops! I think you misunderstood my message - I didn't think I was pointing out a mistake on your part. My 'uhoh' was pointing out surprising behavior on the part of zApply.
If I use my earlier edited example and remove the "name=" argument to zApply, the results still make my forehead get all wrinkled up as the month labels don't align with the results. 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, fun = mean) 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 # : April, August, December, February, January, July, June, March, May, November, October, September So, what the heck does the "by=" do if not group the layers by month? I can't see why you need to define your own aggregation m() to get it to work (and I am impressed that you did get it to work.) Cheers, Ben > On Jul 29, 2016, at 10:27 PM, Vijay Lulla <vijaylu...@gmail.com> wrote: > > Ben, > You're right about a mistake in my code but it is not use of ordered > function. It is that I shouldn't have used the name argument. Following > your example this is what I get: > > > m <- function(x) ordered(months(x), labels=month.name <http://month.name/>) > > x1 <- zApply(s, by=m, mean) # no name argument. > > x1 > # 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 : January, February, March, April, May, June, July, August, > September, October, November, December > # 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 > # : January, February, March, April, May, June, July, August, > September, October, November, December > > Thanks for pointing out the mistake, > Vijay. > > > On Fri, Jul 29, 2016 at 7:17 PM, Ben Tupper <btup...@bigelow.org > <mailto:btup...@bigelow.org>> wrote: > 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@r-project.org <mailto:r-sig-geo@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 > > <kkilpatr...@rsmas.miami.edu <mailto:kkilpatr...@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 > >> > >> _______________________________________________ > >> R-sig-Geo mailing list > >> R-sig-Geo@r-project.org <mailto:R-sig-Geo@r-project.org> > >> https://urldefense.proofpoint.com/v2/url?u=https-3A__stat.ethz.ch_mailman_listinfo_r-2Dsig-2Dgeo&d=CwICAg&c=y2w-uYmhgFWijp_IQN0DhA&r=VXzrzLaooo912e5bVVEO_z5cHQXu_22lipAXBkfCXjM&m=tzdb3kN3Nxjo7NbPkPVqtF269bJen1bf3AzSHEwd7CA&s=zuokuoKIDT6cOaBD2J6ePy1klmf1J3-f3BynP_G5I-g&e= > >> > >> <https://urldefense.proofpoint.com/v2/url?u=https-3A__stat.ethz.ch_mailman_listinfo_r-2Dsig-2Dgeo&d=CwICAg&c=y2w-uYmhgFWijp_IQN0DhA&r=VXzrzLaooo912e5bVVEO_z5cHQXu_22lipAXBkfCXjM&m=tzdb3kN3Nxjo7NbPkPVqtF269bJen1bf3AzSHEwd7CA&s=zuokuoKIDT6cOaBD2J6ePy1klmf1J3-f3BynP_G5I-g&e=> > > > > > > -- > > Katherine (Kay) Kilpatrick > > University of Miami/RSMAS > > Ocean Science Department > > Satellite Remote Sensing Laboratory > > MSC 231 > > 4600 Rickenbacker Cswy > > Miami, Fl > > ph: 305-962-3069 <tel:305-962-3069> > > kkilpatr...@rsmas.miami.edu <mailto:kkilpatr...@rsmas.miami.edu> > > > > > > _______________________________________________ > > R-sig-Geo mailing list > > R-sig-Geo@r-project.org <mailto:R-sig-Geo@r-project.org> > > https://stat.ethz.ch/mailman/listinfo/r-sig-geo > > <https://stat.ethz.ch/mailman/listinfo/r-sig-geo> > > > > _______________________________________________ > > R-sig-Geo mailing list > > R-sig-Geo@r-project.org <mailto:R-sig-Geo@r-project.org> > > https://stat.ethz.ch/mailman/listinfo/r-sig-geo > > <https://stat.ethz.ch/mailman/listinfo/r-sig-geo> > > > > Ben Tupper > Bigelow Laboratory for Ocean Sciences > 60 Bigelow Drive, P.O. Box 380 > East Boothbay, Maine 04544 > http://www.bigelow.org <http://www.bigelow.org/> > > Report Gulf of Maine jellyfish sightings to jellyf...@bigelow.org > <mailto:jellyf...@bigelow.org> or tweet them to #MaineJellies -- include > date, time, and location, as well as any descriptive information such as size > or type. Learn more at > https://www.bigelow.org/research/srs/nick-record/nick-record-laboratory/mainejellies/ > > <https://www.bigelow.org/research/srs/nick-record/nick-record-laboratory/mainejellies/> > > _______________________________________________ > R-sig-Geo mailing list > R-sig-Geo@r-project.org <mailto:R-sig-Geo@r-project.org> > https://stat.ethz.ch/mailman/listinfo/r-sig-geo > <https://stat.ethz.ch/mailman/listinfo/r-sig-geo> > Ben Tupper Bigelow Laboratory for Ocean Sciences 60 Bigelow Drive, P.O. Box 380 East Boothbay, Maine 04544 http://www.bigelow.org Report Gulf of Maine jellyfish sightings to jellyf...@bigelow.org or tweet them to #MaineJellies -- include date, time, and location, as well as any descriptive information such as size or type. Learn more at https://www.bigelow.org/research/srs/nick-record/nick-record-laboratory/mainejellies/ [[alternative HTML version deleted]] _______________________________________________ R-sig-Geo mailing list R-sig-Geo@r-project.org https://stat.ethz.ch/mailman/listinfo/r-sig-geo