2

私は R を初めて使用します。私のデータにはId、と の 3 つの属性で定義された 600k オブジェクトがDateありTimeOfCallます。

TimeofCall00:00:00形式と範囲は00:00:0023:59:59です。

TimeOfCall属性を 24 個のビンにビン化し、それぞれが 1 時間ごとのスロット (最初のビンなど)00:00:00を表します00:59:59

誰かがこれを行う方法を教えてもらえますか? 使用してみcut()ましたが、どうやら私の形式は数値ではありません。前もって感謝します!

4

2 に答える 2

2

正式な時間表現に変換することもできますが、この場合は単に使用する方が簡単かもしれませんsubstr:

test <- c("00:00:01","02:07:01","22:30:15")
as.numeric(substr(test,1,2))
#[1]  0  2 22

時間を使用しPOSIXctて対処することもできます。さらに計算を計画している場合 (時間差など) に便利です。

testtime <- as.POSIXct(test,format="%H:%M:%S")
#[1]"2013-12-09 00:00:01 EST" "2013-12-09 02:07:01 EST" "2013-12-09 22:30:15 EST"
as.numeric(format(testtime,"%H"))
#[1]  0  2 22
于 2013-12-09T00:30:28.707 に答える
0

機能を使用できcut.POsixltます。ただし、データを有効な時間オブジェクトに強制する必要があります。ここでは、handy hmsfromを使用していlubridateます。そしてstrftime、時間形式を取得します。

library(lubridate)
x <- c("09:10:01", "08:10:02",  "08:20:02","06:10:03 ", "Collided at 9:20:04 pm")
x.h <- strftime(cut(as.POSIXct(hms(x),origin=Sys.Date()),'hours'),
         format='%H:%M:%S')

data.frame(x,x.h)

                       x      x.h
1               09:10:01 10:00:00
2               08:10:02 09:00:00
3               08:20:02 09:00:00
4              06:10:03  07:00:00
5 Collided at 9:20:04 pm 22:00:00
于 2013-12-09T00:40:17.730 に答える