2012-11-28 9 views
9

Come posso analizzare questo formato di data? Devo cambiare questi due punti per punto o forse qualcuno conosce una soluzione migliore?Colon in formato data tra secondi e millisecondi. Come analizzare in R?

> x <- "2012.01.15 09:00:02:002" 
> strptime(x, "%Y.%m.%d %H:%M:%S:%OS") 
[1] "2012-01-15 09:00:02" 
> strptime(x, "%Y.%m.%d %H:%M:%OS") 
[1] "2012-01-15 09:00:02" 
> x <- "2012.01.15 09:00:02.002" 
> strptime(x, "%Y.%m.%d %H:%M:%OS") 
[1] "2012-01-15 09:00:02.001" 
+0

Entrambe le risposte sono corrette +1! ma personalmente preferisco gsubfn: D –

+1

Sai davvero che il numero degli ultimi due punti è secondi frazionari? Potrebbe essere qualcos'altro, come i frame. – John

risposta

8

C'è una sottile distinzione qui che potrebbe farti buttare fuori. Come ?strptime note:

per 'strptime' '% OS' sarà secondi di input tra cui frazioni di secondo.

sottolineare che un po ', %OS rappresenta i secondi tra cui frazioni di secondo --- non solo il frazionaria parte dei secondi: se il valore dei secondi è 44,234, %OS o %OS3 rappresenta 44,234, non .234

Quindi la soluzione è infatti quello di sostituire un . per quella finale :.

Ecco un modo si potrebbe fare che:

x <- "2012.01.15 09:00:02:002" 
strptime(gsub(":", ".", x), "%Y.%m.%d %H.%M.%OS") 
+0

+1. Penso che l'OP sapesse già tutto questo - noterai che (s) usa quel fatto nelle ultime cose che ha provato - ma è probabile che sia utile ad altre persone che potrebbero imbattersi in questa domanda. – ruakh

+0

@ruakh - Buon punto, e sospetto che tu abbia ragione. Mi piace il fatto che la citazione di '? Strptime' renda il punto extra inequivocabile. –

+0

Sì, infatti, ho convertito i due punti in punti. Grazie per una rapida risposta :) –

2

Sarebbe

strptime(gsub(":", ".", x), "%Y.%m.%d %H.%M.%OS3") 

essere barare?

+0

'sub' sostituirà solo la prima istanza di un': 'con un' .' piuttosto che ogni istanza. hai bisogno di 'gsub' per quello come da @ JoshO'Brien's risposta – Justin

+0

@Justin: Penso che in realtà l'ho già aggiustato per il momento in cui hai commentato, ma grazie. :-) – ruakh

Problemi correlati