2012-11-28 214 views
9

我該如何解析這個日期格式?我應該改變這個冒號點嗎?或者有人知道更好的解決方案?冒號以秒和毫秒爲單位的日期格式。如何解析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

這兩個答案都是正確的+1!但個人我prefere gsubfn:D –

+1

你真的知道過去的最後冒號數字是小數秒嗎?它可能是其他的東西,比如框架。 – John

回答

8

這裏有一個微妙的區別,可能會把你扔掉。 作爲?strptime筆記:

關於 'strptime' '%OS' 將輸入秒包括小數秒。

要強調的是一個位,%OS表示包括分數秒---不只是分數部分秒的:如果秒值是44.234,%OS%OS3表示44.234,不是.234

所以解決方案的確是用.代替最終的:

這裏是你可以做的一個方法:

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

+1。我認爲OP已經知道所有這些 - 你會注意到他(他)在他嘗試的最後一件事情中使用了這個事實 - 但它可能對可能會遇到這個問題的其他人有用。 – ruakh

+0

@ruakh - 好點,我懷疑你是對的。我喜歡''strptime'的引用使得這個觀點更加明確。 –

+0

確實,我已將冒號轉換爲點。 Thx快速回復:) –

2

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

作弊?

+0

'sub'只會用'.'替代':'的第一個實例,而不是每個實例。你需要'gsub'作爲@ JoshO'Brien的回答 – Justin

+0

@Justin:我想我已經在你評論的時候已經解決了這個問題,但是謝謝。 :-) – ruakh

相關問題