2017-04-07 16 views
3

私のデータセットクラスは "時間"の機能を持っています。この機能は文字クラスに属します。私は以下のエラーで発生し、カット機能R

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

しかし: は、私は以下のように機能を「カット」を使用し、異なる時間当たり拾うこの理由slot.Forの周波数を表示してみてください。

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