ケイグォ(Kaggle)が俺にまだ知らないRの機能を使えと囁いている
cut関数(連続データの離散値化)
連続値をとるデータを適当な区間(breaksで指定)で分割して、factor化してくれる。
> x <- rnorm(10) > x [1] 0.07927061 0.81770466 0.21693545 -0.95629685 1.77248104 -1.29774920 -1.05448409 -0.55145272 2.30786460 [10] -0.74214539 > cut(x, breaks=c(-10,-3,0,3,5,10)) [1] (0,3] (0,3] (0,3] (-3,0] (0,3] (-3,0] (-3,0] (-3,0] (0,3] (-3,0] Levels: (-10,-3] (-3,0] (0,3] (3,5] (5,10]
factor型を数値型に変換
factor型は単純にas.numericしても正しい数値が割り当てられないので、以下の例にあるように「as.numeric(levels(x))[x]」とするとよい。
> x <- as.factor(c(1,4,1,1,2)) > x [1] 1 4 1 1 2 Levels: 1 2 4 > as.numeric(x) [1] 1 3 1 1 2 > as.numeric(levels(x))[x] [1] 1 4 1 1 2
昔書いたかも。