[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