Hi List, The following code returns an "Error in as.POSIXlt.character(x, tz, ...) : character string is not in a standard unambiguous format" require(raster) require(rts) require(stringi) r <- raster(ncol=100, nrow=100) values(r) <- runif(ncell(r)) list(ID=seq(1:24),month=rep(str_pad(1:12, pad = 0,width = 2 , "left"),2),year=sort(rep(2016:2017,12)))->dt stack(r)->s r->rs for(i in 1:23){ rs[]<-r[]*i addLayer(s,rs)->s print(nlayers(s)) } timelst<-paste0(unlist(dt['year']),'-',unlist(dt['month'])) rts(s,time=as.yearmon(timelst))->rsts str(rsts at time) apply.monthly(rsts,mean) I was expecting that the statistics accept the yearmonth format of the timeslot, as it allows subsetting. Any suggestions? Thanks Herry [[alternative HTML version deleted]]
> On Mar 5, 2018, at 3:28 PM, <Alexander.Herr at csiro.au> <Alexander.Herr at csiro.au> wrote: > > Hi List, > > The following code returns an "Error in as.POSIXlt.character(x, tz, ...) : character string is not in a standard unambiguous format"I'm unable to produce that error. Which function was being evaluated to produce the error? I don't see where as.POSIXlt would have been called. You don't have any Date or POSIXt-classed variables. (I did need to also load the stringr package to get str_pad into my workspace.)> > require(raster) > require(rts) > require(stringi) > r <- raster(ncol=100, nrow=100) > values(r) <- runif(ncell(r)) > list(ID=seq(1:24),month=rep(str_pad(1:12, pad = 0,width = 2 , "left"),2),year=sort(rep(2016:2017,12)))->dt > stack(r)->s > r->rs > for(i in 1:23){ > rs[]<-r[]*i > addLayer(s,rs)->s > print(nlayers(s)) > } > timelst<-paste0(unlist(dt['year']),'-',unlist(dt['month'])) > rts(s,time=as.yearmon(timelst))->rsts > str(rsts at time) > apply.monthly(rsts,mean) > > I was expecting that the statistics accept the yearmonth format of the timeslot, as it allows subsetting. > Any suggestions? > Thanks > Herry > > [[alternative HTML version deleted]] > > ______________________________________________ > R-help at r-project.org mailing list -- To UNSUBSCRIBE and more, see > 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.David Winsemius Alameda, CA, USA 'Any technology distinguishable from magic is insufficiently advanced.' -Gehm's Corollary to Clarke's Third Law
Hi Herry, This is probably due to a call to strptime (or similar). No, it doesn't accept %Y-%m as a valid format. Maybe add a constant day to all the dates as that will work: dt<-list(ID=seq(1:24),month=rep(formatC(1:12,flag=0,width=2),2), year=sort(rep(2016:2017,12))) timelst<-paste(unlist(dt['year']),unlist(dt['month']),"01",sep="-") strptime(timelst,format="%Y-%m-%d") Jim On Tue, Mar 6, 2018 at 10:28 AM, <Alexander.Herr at csiro.au> wrote:> Hi List, > > The following code returns an "Error in as.POSIXlt.character(x, tz, ...) : character string is not in a standard unambiguous format" > > require(raster) > require(rts) > require(stringi) > r <- raster(ncol=100, nrow=100) > values(r) <- runif(ncell(r)) > list(ID=seq(1:24),month=rep(str_pad(1:12, pad = 0,width = 2 , "left"),2),year=sort(rep(2016:2017,12)))->dt > stack(r)->s > r->rs > for(i in 1:23){ > rs[]<-r[]*i > addLayer(s,rs)->s > print(nlayers(s)) > } > timelst<-paste0(unlist(dt['year']),'-',unlist(dt['month'])) > rts(s,time=as.yearmon(timelst))->rsts > str(rsts at time) > apply.monthly(rsts,mean) > > I was expecting that the statistics accept the yearmonth format of the timeslot, as it allows subsetting. > Any suggestions? > Thanks > Herry > > [[alternative HTML version deleted]] > > ______________________________________________ > R-help at r-project.org mailing list -- To UNSUBSCRIBE and more, see > 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.
Thanks Jim Still getting the same error for apply.montly Updated code: require(raster) require(rts) require(stringr) r <- raster(ncol=100, nrow=100) values(r) <- runif(ncell(r)) stack(r)->s r->rs for(i in 1:23){ rs[]<-r[]*i addLayer(s,rs)->s print(nlayers(s)) } dt<-list(ID=seq(1:24),month=rep(formatC(1:12,flag=0,width=2),2), year=sort(rep(2016:2017,12))) timelst<-paste0(unlist(dt['year']),'-',unlist(dt['month']),"-01") strptime(timelst,format="%Y-%m-%d")->t1 rts(s,time=as.yearmon(t1))->rsts subset(rsts,'2017')->r2017 class(r2017 at time) class(rsts at time) apply.monthly(rsts,mean) -----Original Message----- From: Jim Lemon [mailto:drjimlemon at gmail.com] Sent: Tuesday, 6 March 2018 11:14 AM To: Herr, Alexander (L&W, Black Mountain) <Alexander.Herr at csiro.au> Cc: r-help mailing list <r-help at r-project.org> Subject: Re: [R] raster time series statistics Hi Herry, This is probably due to a call to strptime (or similar). No, it doesn't accept %Y-%m as a valid format. Maybe add a constant day to all the dates as that will work: dt<-list(ID=seq(1:24),month=rep(formatC(1:12,flag=0,width=2),2), year=sort(rep(2016:2017,12))) timelst<-paste(unlist(dt['year']),unlist(dt['month']),"01",sep="-") strptime(timelst,format="%Y-%m-%d") Jim On Tue, Mar 6, 2018 at 10:28 AM, <Alexander.Herr at csiro.au> wrote:> Hi List, > > The following code returns an "Error in as.POSIXlt.character(x, tz, ...) : character string is not in a standard unambiguous format" > > require(raster) > require(rts) > require(stringi) > r <- raster(ncol=100, nrow=100) > values(r) <- runif(ncell(r)) > list(ID=seq(1:24),month=rep(str_pad(1:12, pad = 0,width = 2 , > "left"),2),year=sort(rep(2016:2017,12)))->dt > stack(r)->s > r->rs > for(i in 1:23){ > rs[]<-r[]*i > addLayer(s,rs)->s > print(nlayers(s)) > } > timelst<-paste0(unlist(dt['year']),'-',unlist(dt['month'])) > rts(s,time=as.yearmon(timelst))->rsts > str(rsts at time) > apply.monthly(rsts,mean) > > I was expecting that the statistics accept the yearmonth format of the timeslot, as it allows subsetting. > Any suggestions? > Thanks > Herry > > [[alternative HTML version deleted]] > > ______________________________________________ > R-help at r-project.org mailing list -- To UNSUBSCRIBE and more, see > 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.
Last line in the following (updated) code produces the error require(raster) require(rts) require(stringr) r <- raster(ncol=100, nrow=100) values(r) <- runif(ncell(r)) stack(r)->s r->rs for(i in 1:23){ rs[]<-r[]*i addLayer(s,rs)->s print(nlayers(s)) } dt<-list(ID=seq(1:24),month=rep(formatC(1:12,flag=0,width=2),2), year=sort(rep(2016:2017,12))) timelst<-paste0(unlist(dt['year']),'-',unlist(dt['month']),"-01") strptime(timelst,format="%Y-%m-%d")->t1 rts(s,time=as.yearmon(t1))->rsts subset(rsts,'2017')->r2017 class(r2017 at time) class(rsts at time) apply.monthly(rsts,mean) -----Original Message----- From: David Winsemius [mailto:dwinsemius at comcast.net] Sent: Tuesday, 6 March 2018 11:10 AM To: Herr, Alexander (L&W, Black Mountain) <Alexander.Herr at csiro.au> Cc: r-help at r-project.org Subject: Re: [R] raster time series statistics> On Mar 5, 2018, at 3:28 PM, <Alexander.Herr at csiro.au> <Alexander.Herr at csiro.au> wrote: > > Hi List, > > The following code returns an "Error in as.POSIXlt.character(x, tz, ...) : character string is not in a standard unambiguous format"I'm unable to produce that error. Which function was being evaluated to produce the error? I don't see where as.POSIXlt would have been called. You don't have any Date or POSIXt-classed variables. (I did need to also load the stringr package to get str_pad into my workspace.)> > require(raster) > require(rts) > require(stringi) > r <- raster(ncol=100, nrow=100) > values(r) <- runif(ncell(r)) > list(ID=seq(1:24),month=rep(str_pad(1:12, pad = 0,width = 2 , > "left"),2),year=sort(rep(2016:2017,12)))->dt > stack(r)->s > r->rs > for(i in 1:23){ > rs[]<-r[]*i > addLayer(s,rs)->s > print(nlayers(s)) > } > timelst<-paste0(unlist(dt['year']),'-',unlist(dt['month'])) > rts(s,time=as.yearmon(timelst))->rsts > str(rsts at time) > apply.monthly(rsts,mean) > > I was expecting that the statistics accept the yearmonth format of the timeslot, as it allows subsetting. > Any suggestions? > Thanks > Herry > > [[alternative HTML version deleted]] > > ______________________________________________ > R-help at r-project.org mailing list -- To UNSUBSCRIBE and more, see > 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.David Winsemius Alameda, CA, USA 'Any technology distinguishable from magic is insufficiently advanced.' -Gehm's Corollary to Clarke's Third Law