[R-sig-Geo] Incorrect month order in zApply function
Thiago V. dos Santos
thi_veloso at yahoo.com.br
Fri Jul 29 21:20:24 CEST 2016
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
>
> _______________________________________________
> R-sig-Geo mailing list
> R-sig-Geo at 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=
--
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
kkilpatrick at rsmas.miami.edu
_______________________________________________
R-sig-Geo mailing list
R-sig-Geo at r-project.org
https://stat.ethz.ch/mailman/listinfo/r-sig-geo
More information about the R-sig-Geo
mailing list