[R] Fwd: strptime() problem? - Resolved
javier garcia - CEBAS
rn001 at cebas.csic.es
Wed Aug 18 11:20:01 CEST 2004
Hi Gabor and everybody;
Thanks Gabor, with the alternative step you've told me the problem is
resolved. Comparing the two procedures:
Extract from the source 'character' data:
> rain$ts[2039:2046]
[1] "25/03/2000 22:00:00 UTC" "25/03/2000 23:00:00 UTC"
[3] "26/03/2000 00:00:00 UTC" "26/03/2000 01:00:00 UTC"
[5] "26/03/2000 02:00:00 UTC" "26/03/2000 03:00:00 UTC"
[7] "26/03/2000 04:00:00 UTC" "26/03/2000 05:00:00 UTC"
Proc 1. The 5th el. of the obtained POSIXct serie goes out of itself
---------------------------------------------------------------------------------
> rain.strptime <- strptime(rain$ts, format="%d/%m/%Y %H:%M:%S")
> rain.strptime.ct <- as.POSIXct(rain.strptime,tz="GMT")
> rain.strptime.ct[2039:2046]
[1] "2000-03-25 23:00:00 CET" "2000-03-26 00:00:00 CET"
[3] "2000-03-26 01:00:00 CET" "2000-03-26 03:00:00 CEST"
[5] "2000-03-26 05:00:00 CEST" "2000-03-26 05:00:00 CEST"
[7] "2000-03-26 06:00:00 CEST" "2000-03-26 07:00:00 CEST"
> format(rain.strptime.ct[2039:2046],tz="GMT",usetz=TRUE)
[1] "2000-03-25 22:00:00 GMT" "2000-03-25 23:00:00 GMT"
[3] "2000-03-26 00:00:00 GMT" "2000-03-26 01:00:00 GMT"
[5] "2000-03-26 03:00:00 GMT" "2000-03-26 03:00:00 GMT"
[7] "2000-03-26 04:00:00 GMT" "2000-03-26 05:00:00 GMT"
> as.numeric(rain.strptime.ct[2039:2046])
[1] 954021600 954025200 954028800 954032400 954039600 954039600 954043200
[8] 954046800
Proc 2. The obtained POSIXct serie is continuous, and it seems OK for me.
---------------------------------------------------------------------------------
rain.chron <-
chron(substring(rain$ts,1,10),substring(rain$ts,12,19),format=c("d/m/y","h:m:s"))
rain.chron.ct <- as.POSIXct(rain.chron,tz="GMT")
> rain.chron.ct[2039:2046]
[1] "2000-03-25 23:00:00 CET" "2000-03-26 00:00:00 CET"
[3] "2000-03-26 01:00:00 CET" "2000-03-26 03:00:00 CEST"
[5] "2000-03-26 04:00:00 CEST" "2000-03-26 05:00:00 CEST"
[7] "2000-03-26 06:00:00 CEST" "2000-03-26 07:00:00 CEST"
> format(lluvia.chron.ct[2039:2046],tz="GMT",usetz=TRUE)
[1] "2000-03-25 22:00:00 GMT" "2000-03-25 23:00:00 GMT"
[3] "2000-03-26 00:00:00 GMT" "2000-03-26 01:00:00 GMT"
[5] "2000-03-26 02:00:00 GMT" "2000-03-26 03:00:00 GMT"
[7] "2000-03-26 04:00:00 GMT" "2000-03-26 05:00:00 GMT"
> as.numeric(rain.chron.ct[2039:2046])
[1] 954021600 954025200 954028800 954032400 954036000 954039600 954043200
[8] 954046800
For me the problem is resolved by mean of package 'chron'. And it's as direct
as the use of the first procedure. Just as a comment, I think that for a
proper behaviour, the first procedure should give the same result. Shouldn't
it?
Thanks all and best regards.
-------
-------
El Mar 17 Ago 2004 20:02, javier garcia - CEBAS escribió:
> ---------- Mensaje reenviado ----------
>
> Subject: RE: [R] Fwd: strptime() problem?
> Date: Tue, 17 Aug 2004 11:57:46 -0400 (EDT)
> From: "Gabor Grothendieck" <ggrothendieck at myway.com>
> To: rn001 at cebas.csic.es, ripley at stats.ox.ac.uk, r-help at stat.math.ethz.ch
>
> I am in a different time zone, EDT, on Windows XP and can't
> replicate this but you might try reading the latest R News
> article on dates and times for some ideas, viz. page 32 of:
>
> http://cran.r-project.org/doc/Rnews/Rnews_2004-1.pd
>
> In particular, try converting them to chron and then doing
> your manipulations in chron or else convert them from chron to
> POSIXct:
>
> require(chron)
> r.asc <- raincida$ts
> r.chron <- chron(substring(r.asc, 1, 10),
> substring(r.asc, 12, 19), format = c("d/m/y", "h:m:s"))
>
> r.ct <- as.POSIXct(r.chron)
> format(r.ct, tz="GMT") # display POSIXct in GMT
>
> Date: Tue, 17 Aug 2004 16:25:12 +0200
> From: javier garcia - CEBAS <rn001 at cebas.csic.es>
> To: Prof Brian Ripley <ripley at stats.ox.ac.uk>,
> <r-help at stat.math.ethz.ch> Subject: [R] Fwd: strptime() problem?
>
> Hi all;
> I've already send a similar e-mail to the list and Prof. Brian Ripley
> answered me but my doubts remain unresolved. Thanks for the clarification,
> but perhaps I wasn't clear enough in posting my questions.
>
> I've got a postgres database which I read into R. The first column is
> Timestamp with timezone, and my data are already in UTC format. An
> 'printed' extract of R character column, resulting from the timestamptz
> field is:
>
> raincida$ts:
>
> [2039] "25/03/2000 22:00:00 UTC" "25/03/2000 23:00:00 UTC"
> [2041] "26/03/2000 00:00:00 UTC" "26/03/2000 01:00:00 UTC"
> [2043] "26/03/2000 02:00:00 UTC" "26/03/2000 03:00:00 UTC"
> [2045] "26/03/2000 04:00:00 UTC" "26/03/2000 05:00:00 UTC"
>
> #And I need to convert this character column into POSIXct, for eventual
> work. #As I can see in the documentation, the process is to use strptime(),
> what #creates an object POSIXlt and doesn't allow to specify that the time
> zone of #the data is already UTC; followed by as.POSIXct()
>
> > lluvia.strptime <- strptime(raincida$ts, format="%d/%m/%Y %H:%M:%S")
> > lluvia.strptime.POSIXct <- as.POSIXct(lluvia.strptime,tz="GMT")
>
> A "printed" extract is:
>
> [2039] "2000-03-25 22:00:00 GMT" "2000-03-25 23:00:00 GMT"
> [2041] "2000-03-26 00:00:00 GMT" "2000-03-26 01:00:00 GMT"
> [2043] "2000-03-26 03:00:00 GMT" "2000-03-26 03:00:00 GMT"
> [2045] "2000-03-26 04:00:00 GMT" "2000-03-26 05:00:00 GMT"
>
> As we can see, elements [2043] differ. Shouldn't they be similar as the
> rest of the other shown elements? I thought this was a bug, but it seems
> that I've got and conceptual error.(?). This happens several times in my
> data, and produces eventual errors.
>
> Please, how could I resolved this?
>
> Thanks all, and best regards,
>
> Javier G.
>
>
>
> _______________________________________________
> No banners. No pop-ups. No kidding.
>
> -------------------------------------------------------
More information about the R-help
mailing list