11

次のようなベクトルがあります。

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 だけが含まれます。

4

2 に答える 2

9

私はジョシュアに同意し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上限を閉じた端として使用して余分な間隔を形成することに注意してください。ただし、最大値をInfR の無限の予約語である に置き換えない限り)。

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
于 2012-09-10T16:22:41.273 に答える