2016-01-13 63 views
3

我想在河至訂單日期我有一些字符串看起來像這樣問題r中訂購日期

jnk <- c("2016-01-12T10:54:41Z", "2016-01-12T12:40:30Z", "2016-01-12T14:59:22Z", 
     "2016-01-12T15:55:10Z", "2015-03-29T02:56:42Z", "2015-03-29T02:40:56Z") 

所以我strptime

jnk2 <- strptime(jnk, "%Y-%m-%dT%H:%M:%SZ") 

格式化當我現在嘗試訂購他們,2015年的兩個日期將永遠在最後...

order(jnk2) 

[1] 1 2 3 4 5 6

我錯過了什麼嗎?我期望爲了6, 5, 1, 2, 3, 4

+0

我不知道爲什麼,但2015年的字符串沒有CET作爲時區。可能值得調查? – Heroka

+0

運行'strptime(c(「2015-03-29 01:30:00」,「2015-03-29 02:00:00」,「2015-03-29 02:30:00」,「2015-03 -29 03:00:00「),」%Y-%m-%d%H:%M:%S「)與德國語言環境,你應該能夠猜測爲什麼中間的值沒有時區。 – Roland

+0

如果我不能......這是否意味着我很愚蠢?我真的不明白,即使是德語區域:-) – drmariod

回答

8

我有同樣的問題,直到我所定義的時間段(例如tz="GMT"):

jnk <- c("2016-01-12T10:54:41Z", "2016-01-12T12:40:30Z", "2016-01-12T14:59:22Z", 
     "2016-01-12T15:55:10Z", "2015-03-29T02:56:42Z", "2015-03-29T02:40:56Z") 

jnk2 <- strptime(jnk, "%Y-%m-%dT%H:%M:%SZ", tz="GMT") 
order(jnk2) 

[1] 6 5 1 2 3 4

+0

不錯,但你有一個想法,爲什麼發生這種情況?!無法看到與其他字符串相比的區別... – drmariod

+0

不確定,但由於某種原因,最後兩次在'strptime'後沒有關聯的'tz'。 –

+0

@drmariod我從表面上進行了調查。 'order'不是泛型的,它調用通用的'xtfrm',然後調用'xtfrm.POSIXlt'。似乎後一個函數通過'as.double(x)'簡化了參數。因此,我們有效地結束了調用'order(as.double(jnk2))',這給出了錯誤的順序。爲什麼這個功能只是轉換我不知道。 –