9

新しいカテゴリ変数を作成するための参照として使用したい整数の列を持つデータフレームがあります。変数を 3 つのグループに分割し、範囲を自分で設定したいと考えています (つまり、0 ~ 5、6 ~ 10 など)。試してみcutましたが、正規分布に基づいて変数をグループに分割し、データが正しく歪んでいます。if/then ステートメントも使用しようとしましたが、これは true/false 値を出力し、元の変数を保持したいと思います。これを行う簡単な方法があると確信していますが、それを理解できないようです。これをすばやく行うための簡単な方法に関するアドバイスはありますか?

私は次のようなことを念頭に置いていました:

x   x.range
3   0-5
4   0-5
6   6-10
12  11-15
4

3 に答える 3

18
x <- rnorm(100,10,10)
cut(x,c(-Inf,0,5,6,10,Inf))
于 2010-04-15T18:00:33.973 に答える
12

私の知る限り、イアンの答え(カット)はこれを行う最も一般的な方法です。

Lattice Packageのshingleを使用することを好みます

ビニング間隔を指定する引数は、私にはもう少し直感的に思えます。

あなたはシングルを次のように使用します

# mock some data
data = sample(0:40, 200, replace=T)

a = c(0, 5);b = c(5,9);c = c(9, 19);d = c(19, 33);e = c(33, 41)

my_bins = matrix(rbind(a, b, c, d, e), ncol=2)

# returns: (the binning intervals i've set)
        [,1] [,2]
 [1,]    0    5
 [2,]    5    9
 [3,]    9   19
 [4,]   19   33
 [5,]   33   41

shx = shingle(data, intervals=my_bins)

#'shx' at the interactive prompt will give you a nice frequency table:
# Intervals:
   min max count
1   0   5    23
2   5   9    17
3   9  19    56
4  19  33    76
5  33  41    46
于 2010-04-15T18:21:16.950 に答える