2012-12-06 73 views
3

我正在讀一個CSV到一個變量「東西」,並強迫第一列到POSIXct(此列只有時間戳,形式爲「2012-12-04 17:49:52」,所以這個效果很好)。POSIXct平等工作奇怪

stuff[,1]<-as.POSIXct(stuff[,1]) 

因爲我有好幾天的價值的數據,我則試圖通過日期,打破東西:

control <- subset(stuff,as.Date(stuff[,1]) == '2012-11-27') 
control.1 <- subset(stuff,as.Date(stuff[,1]) == '2012-11-28') 

我覺得這不會將數據增長日期爲分割我會期待的。 尾(控制)告訴我,最後一個值是在2012-11-27 15:54:21,而頭(control.1)顯示它的第一個值是2012-11-27 16:04:35。

因爲某些原因,平等因此似乎在16:00左右的某個地方發生。我試圖在強制使用POSIXct時指定時區,但這也沒有幫助。有什麼我可以做的白天子集(這是否有失敗的原因)?我想提一提,我需要將小時信息保存在那裏,因爲我打算隨後使用它來分割數據。

+0

這是因爲時區。您可以在as.Date中指定時區,默認情況下它是UTC,因此當您將時間戳轉換爲日期時,一些將落在不同的日期。確保你的時區在as.Date匹配你的時間戳時區 – ilya

+0

我試圖修復時間戳,說'stuff [,1] < - as.Date(stuff [,1],tzone =「PST」)',並指定時間區域也在平等檢查中,但我得到了相同的結果。 有趣的是,我得到了正確的結果,如果我這樣做: 'control < - subset(cases,cases [,1] <= as.POSIXct('2012-11-27 23:59:59'))' – padips

回答

0

也許cut可能對您有用,但如果沒有您的數據樣本來重現您遇到的問題,則很難確定。

以下是使用cut創建日常子集的最簡單示例。

set.seed(1) # So you can get the same numbers as I do 
MyDates <- ISOdatetime(2012, 1, 1, 0, 0, 0, tz = "GMT") + sample(1:500000, 100) 
class(MyDates) 
# [1] "POSIXct" "POSIXt" 
split(MyDates, cut(MyDates, breaks="1 day")) 
$`2012-01-01` 
[1] "2012-01-01 08:34:53 GMT" "2012-01-01 17:26:15 GMT" "2012-01-01 01:51:35 GMT" 
[4] "2012-01-01 14:59:28 GMT" "2012-01-01 03:14:25 GMT" "2012-01-01 09:48:56 GMT" 
[7] "2012-01-01 13:48:48 GMT" "2012-01-01 11:41:58 GMT" "2012-01-01 16:53:56 GMT" 
[10] "2012-01-01 19:54:00 GMT" "2012-01-01 08:11:02 GMT" 

$`2012-01-02` 
[1] "2012-01-02 12:52:35 GMT" "2012-01-02 04:00:41 GMT" "2012-01-02 04:36:26 GMT" 
[4] "2012-01-02 00:31:17 GMT" "2012-01-02 05:27:47 GMT" "2012-01-02 13:06:44 GMT" 
[7] "2012-01-02 23:16:05 GMT" "2012-01-02 01:51:43 GMT" "2012-01-02 09:59:46 GMT" 
:::: 
:::: 
:::: 
[13] "2012-01-05 10:25:04 GMT" "2012-01-05 20:34:21 GMT" "2012-01-05 11:56:40 GMT" 
[16] "2012-01-05 02:56:40 GMT" "2012-01-05 09:08:00 GMT" "2012-01-05 02:45:00 GMT" 
[19] "2012-01-05 12:09:45 GMT" "2012-01-05 14:42:59 GMT" "2012-01-05 16:35:56 GMT" 

$`2012-01-06` 
[1] "2012-01-06 06:08:22 GMT" "2012-01-06 04:46:31 GMT" "2012-01-06 11:12:12 GMT" 
[4] "2012-01-06 17:45:37 GMT" "2012-01-06 09:48:54 GMT" "2012-01-06 00:47:02 GMT" 
[7] "2012-01-06 06:46:24 GMT" "2012-01-06 01:33:21 GMT" "2012-01-06 03:53:53 GMT" 
[10] "2012-01-06 00:01:45 GMT" "2012-01-06 13:23:54 GMT" "2012-01-06 01:40:54 GMT" 
+0

這很好。謝謝! – padips