2012-05-03 90 views
0

我需要你的幫助和datetime解決我的問題在R.如何更改日期時間格式歸類期

我有一個因素一流的日期時間,如:

"02/02/2010 12:00" "02/02/2010 12:05" "02/02/2010 12:10" 

然後我只是想挑選時間,如:"12:00" "12:05" "12:10"

我已經嘗試將第一個因素轉換爲字符,然後將其更改爲日期類。我的目標是要列爲periode的時間範圍(晚上,中午,下午,晚上)

getPeriode <- function(RAYON) { 
    Midi <- as.character.POSIXt("12:00", format ='%H:%M:%S') # Winter Solstice 

    d <- as.character.POSIXt(HEURE, format='%H:%M:%S') 

    ifelse (rayon < 10, "night", 
      ifelse (d = Midi, "noon", 
       ifelse (d >= Midi, "afternoon", "evening"))) 

} 

但是,似乎不工作.. :(

我想關鍵是,當我們要輸入

d <- as.character.POSIXt(HEURE, format='%H:%M:%S') 

數據我真的感謝您的幫助..謝謝..之前

回答

2

我經常發現日期和時間類,而混亂的操作,在這種情況下,我認爲它會更容易使用字符串和整數來處理變量。我不確定我是否理解你的所有代碼,但這可能會激發你自己的解決方案。

datetime <- c("02/02/2010 07:00", "02/02/2010 08:05", "02/02/2010 11:00", 
       "02/02/2010 12:10", "02/02/2010 16:10", "02/02/2010 23:10") 
heure <- as.integer(substr(datetime, 12, 13)) 
conversion <- data.frame(datetime=datetime, heure=heure, 
    period=cut(heure, c(-Inf, 7, 10, 12, 17, Inf), 
       labels=c("night", "morning", "noon", "afternoon", "evening"))) 

給你

> conversion 
      datetime heure period 
1 02/02/2010 07:00  7  night 
2 02/02/2010 08:05  8 morning 
3 02/02/2010 11:00 11  noon 
4 02/02/2010 12:10 12  noon 
5 02/02/2010 16:10 16 afternoon 
6 02/02/2010 23:10 23 evening 
+2

而不是使用'substr'你也可以只將其格式化爲一個小時。 '日期= as.POSIXlt(日期,格式='%d /%m /%Y%H:%M')'後面加'heure = as.numeric(格式(日期,'%H'))' 。 – nograpes

+0

@Backlin:非常感謝您的回答,這給我一個想法爲解決方案.. :) nograpes:是的,你是對的,它的工作與你的方法..謝謝.. – YougyZ

+0

不客氣!在這個過程中,我也意識到了一些事情。 – Backlin