[R] Strptime/ date time classes
Mark Difford
mark_difford at yahoo.co.uk
Wed Jul 9 18:35:01 CEST 2008
Hi Caroline,
Because POSIXlt is a complicated structure: you are dealing with a list, not
with what you think you are. Maybe this will help you to see more clearly.
strptime(19800604062759, format="%Y%m%d%H%M%S")
[1] "1980-06-04 06:27:59"
str(strptime(19800604062759, format="%Y%m%d%H%M%S"))
POSIXlt[1:9], format: "1980-06-04 06:27:59" ## length == 9
strptime(c(19800604062759,19800604062800), format="%Y%m%d%H%M%S")
[1] "1980-06-04 06:27:59" "1980-06-04 06:28:00"
str(strptime(c(19800604062759,19800604062800), format="%Y%m%d%H%M%S"))
POSIXlt[1:9], format: "1980-06-04 06:27:59" "1980-06-04 06:28:00" ##
length == 9
typeof(strptime(c(19800604062759,19800604062800), format="%Y%m%d%H%M%S"))
[1] "list"
length(unlist(strptime(c(19800604062759,19800604062800),
format="%Y%m%d%H%M%S")))
[1] 18 ## 9 * 2 == 18
HTH you on your way,
Mark.
Caroline Keef wrote:
>
> Dear all,
>
> I've come across a problem using strptime, can anyone explain what's
> going on? I'm using version 2.7.0 on Windows XP.
>
> Thank you
>
> Caroline
>
> First read in a data file using read.table
>
> alldata = read.table(file, header=F, skip=4, colClasses =
> c("character","numeric"))
>
> dim(alldata)
> [1] 223960 2
>
> # inefficient, safe way of sorting out missing or dodgy data
>
> alldata[,2][alldata[,2] < 0] = NA
>
> # first ten lines of the data
>
> alldata[1:10,]
> V1 V2
> 1 19800604062759 NA
> 2 19800604062800 0.271
> 3 19800604111900 0.286
> 4 19800604134300 0.362
> 5 19800604144400 0.465
> 6 19800604163300 0.510
> 7 19800604175400 0.518
> 8 19800604185100 0.526
> 9 19800611110900 NA
> 10 19800611110959 NA
>
> #Then convert the first column using strptime
>
> datetimes = strptime(alldata[,1],format="%Y%m%d%H%M%S")
>
> #Then I want to get minimum and maximum, but some seem to be missing
> when they aren't.
>
> length(as.POSIXlt(datetimes)) #also equal to length(datetimes)
>
> [1] 9
>
> # Why isn't this 223960? Is it something to do with the class?
>
> # This is the really puzzling bit (to me anyway)
>
> a =(1:223960)[is.na(datetimes)]
>
> # which gives
> 1462 14295 18744 50499 50500 92472 92473 92474 92475 92476
> 137525 137526 137527 171066 171067 192353
>
> # 16 values
>
> alldata[a,]
> V1 V2
> 1462 19810329012000 0.983
> 14295 19900325014300 0.219
> 18744 19920329014300 0.246
> 50499 19960331013000 0.564
> 50500 19960331015700 0.563
> 92472 19970330010200 0.173
> 92473 19970330011400 0.172
> 92474 19970330012700 0.172
> 92475 19970330014400 0.172
> 92476 19970330015500 0.172
> 137525 19980329011600 0.427
> 137526 19980329014100 0.427
> 137527 19980329015600 0.427
> 171066 19990328010300 0.223
> 171067 19990328011800 0.223
> 192353 20000326012800 0.189
>
> datetimes[a]
> [1] "1981-03-29 01:20:00" "1990-03-25 01:43:00" "1992-03-29 01:43:00"
> "1996-03-31 01:30:00" "1996-03-31 01:57:00" [6] "1997-03-30 01:02:00"
> "1997-03-30 01:14:00" "1997-03-30 01:27:00" "1997-03-30 01:44:00"
> "1997-03-30 01:55:00" [11] "1998-03-29 01:16:00" "1998-03-29 01:41:00"
> "1998-03-29 01:56:00" "1999-03-28 01:03:00" "1999-03-28 01:18:00" [16]
> "2000-03-26 01:28:00"
>
> # They're all around the end of March! I've looked at the data file and
> I can't see anything funny in it around these dates.
>
>
>
> The first few lines of the data file look like
>
> #TZUTC+0|*|SANR08002|*|SNAMENAUL|*|SWATERDELVIN|*|CNR98808|*|
> #CNAMEQ|*|CTYPEn-min-ip|*|CMW1440|*|RTIMELVLhigh-resolution|*|
> #CUNITm3/s|*|RINVAL-777|*|RNR-1|*|REXCHANGE98913|*|
> #RTYPEinstantaneous values|*|
> 19800604062759 -777.0
> 19800604062800 0.271
> 19800604111900 0.286
> 19800604134300 0.362
> 19800604144400 0.465
> 19800604163300 0.510
> 19800604175400 0.518
> 19800604185100 0.526
> 19800611110900 -777.0
> 19800611110959 -777.0
> 19800611111000 0.100
> 19800611211400 0.096
> 19800612000000 0.096
> 19800612065000 0.098
> 19800612133400 0.100
>
>
>
>
>
> Caroline KeefJBA Consulting
> South Barn, Broughton Hall, Skipton, North Yorkshire, BD23 3AE, UK
> t: +44 (0)1756 799919 f: +44 (0)1756 799449
>
> JBA Consulting now incorporates Maslen Environmental, the award winning
> environmental regeneration consultancy.
> http://www.maslen-environmental.com.
>
> JBA is a Carbon Neutral Company. Please don't print this e-mail unless you
> really need to.
>
> This email is covered by JBA Consulting's email disclaimer at
> www.jbaconsulting.co.uk/emaildisclaimer.
>
> ______________________________________________
> R-help at r-project.org mailing list
> 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.
>
>
--
View this message in context: http://www.nabble.com/Strptime--date-time-classes-tp18362221p18365531.html
Sent from the R help mailing list archive at Nabble.com.
More information about the R-help
mailing list