2017-04-07 98 views
3

我的數據集類有「時間」功能。該功能屬於角色類。 我儘量表現的拿起根據不同的時間slot.For爲此頻率,我用「一刀切」的功能如下:R的切割功能

FreqPickupTime <- cut(dt$time, breaks = "hour") 

但是,我與發生下面的錯誤。

cut.default(dt $ time,breaks =「hour」)中的錯誤:'x'必須是數字。

是否有任何解決方案使用此剪切功能的字符功能。

+1

'切()'將無法在字符值工作。你是否在字段中輸入日期?然後,您需要將其轉換爲適當的日期時間值。見'strptime'。 'cut()'函數具有日期時間(POSIXt)值的特殊屬性。如果您將示例輸入數據包含[可重現示例](http://stackoverflow.com/questions/5963269/how-to-make-a- great-r-reproducible-example),那將會更好,所以我們確切知道什麼你的數據看起來像。 – MrFlick

回答

2

正如MrFlick所說,cut()不會將其剪切爲字符。

df$time看起來像:16:42, 12:32, 03:20...

例如:

time <- paste0(round(runif(1000, 0, 23), digits = 0), ':', round(runif(1000, 1, 59), digits = 0)) 

你可以簡單地做:

table(substr(time, 1, regexpr(':', time)-1)) 
+0

感謝您的示例,但它不適用於我的數據集。我的數據就像「00:28:14」。我想要使​​用基於時間段00:00- 6:00和6:00-12:00以及12:00-5:00和...... –

+0

的子集數據好嗎,您是否記得更改變量在table()調用'table(substr(df $ time,1,regexpr(':',df $ time)-1))''?也許,試着發佈'typeof(df $ time)'這裏回來?問題是,即使您的數據按照您的說法進行了格式化,此代碼也應該可以正常工作。 – Majo