目的カテゴリーデータの再カテゴリー化を行う。
使用法 recode2(x, y) 引数 x 連続変数データベクトル y 再カテゴリー化を定義する n×3 行列 i 行の 1 列目 2 列目を y[i,1], y[i,2] としたとき, y[i,1] ≦ x ≦ y[i,2] である x を y[i,3] に置き換える ソース インストールは,以下の 1 行をコピーし,R コンソールにペーストする source("http://aoki2.si.gunma-u.ac.jp/R/src/recode2.R", encoding="euc-jp") # カテゴリーデータの再カテゴリー化 recode2 <- function( x, # 連続変数データベクトル y) # 再カテゴリー化を定義する n×3 行列 # i 行の 1 列目 2 列目を y[i,1], y[i,2] としたとき, # y[i,1] ≦ x ≦ y[i,2] である x を y[i,3] に置き換える { if (ncol(y) != 3) { stop("y は3列でなければいけない") } n <- nrow(y) for (i in 1:n) { for (j in 1:n) { if (i != j && ((y[i,1] <= y[j,1] && y[j,1] <= y[i,2]) || (y[i,1] <= y[j,2] && y[j,2] <= y[i,2]))) { stop("区間情報に重複があります") } } } sapply(x, function(z) ifelse(is.na(z), NA, y[,3][y[,1] <= z & z <= y[,2]])) } 使用例 y <- matrix(c(1,3,1, 4,7,5, 8,10,9), byrow=TRUE, nc=3) x <- c(7, 4, 3, 1, 8, 6, 5, 5, 8, 1, 1, 10, 7, 6, 3, 5, 10, 8, 3, 3) recode2(x, y) 結果 > x [1] 7 4 3 1 8 6 5 5 8 1 1 10 7 6 3 5 10 8 3 3 > y [,1] [,2] [,3] [1,] 1 3 1 [2,] 4 7 5 [3,] 8 10 9 > recode2(x, y) [1] 5 5 1 1 9 5 5 5 9 1 1 9 5 5 1 5 9 9 1 1