次のようなベクトルがあります。
dataset <- c(4,7,9,1,10,15,18,19,3,16,10,16,12,22,2,23,16,17)
カスタム ブレークによって連続データセットをビン化する 4 つのダミー カテゴリを作成したいと思います。.. 例: 1:4、5:9、10:17、18:23。
出力ダミー カテゴリは、元の連続ベクトル (この場合は 18) と同じ長さになりますが、ビン化された各ダミー変数には 1 または 0 だけが含まれます。
次のようなベクトルがあります。
dataset <- c(4,7,9,1,10,15,18,19,3,16,10,16,12,22,2,23,16,17)
カスタム ブレークによって連続データセットをビン化する 4 つのダミー カテゴリを作成したいと思います。.. 例: 1:4、5:9、10:17、18:23。
出力ダミー カテゴリは、元の連続ベクトル (この場合は 18) と同じ長さになりますが、ビン化された各ダミー変数には 1 または 0 だけが含まれます。
私はジョシュアに同意しcut
ます。これは、ほとんどの人がこのタスクについて考えるものです。私はたまたまそのデフォルトが好きではなく、左閉鎖間隔を好むので、それを正しく設定するのは少し面倒cut
です (それは可能ですが)。私の弱い脳のために幸いなことに、Frank Harrell はcut2
彼の Hmisc で関数を設計しました私が好むデフォルトのパッケージ. 3番目の選択肢はfindInterval
, 別の抽出または選択プロセスへのインデックスとして結果を使用したい問題に特に適しているas.numeric
. cut
:
require(Hmisc)
cut2(dataset, c(1,4,9,17,23) )
[1] [ 4, 9) [ 4, 9) [ 9,17) [ 1, 4) [ 9,17) [ 9,17) [17,23] [17,23] [ 1, 4) [ 9,17)
[11] [ 9,17) [ 9,17) [ 9,17) [17,23] [ 1, 4) [17,23] [ 9,17) [17,23]
(findInterval
上限を閉じた端として使用して余分な間隔を形成することに注意してください。ただし、最大値をInf
R の無限の予約語である に置き換えない限り)。
findInterval(dataset, c( c(1,4,9,17,23) ) )
[1] 2 2 3 1 3 3 4 4 1 3 3 3 3 4 1 5 3 4
as.numeric( cut(dataset, c(1,4,9,17,Inf), include.lowest=TRUE))
[1] 1 2 2 1 3 3 4 4 1 3 3 3 3 4 1 4 3 3
as.numeric( cut(dataset, c(1,4,9,17,23), include.lowest=TRUE))
[1] 1 2 2 1 3 3 4 4 1 3 3 3 3 4 1 4 3 3