2

他の変数 A の分位数を使用して因子変数を作成したいと考えています。

私はこのコードを試しました:

> cut(value, breaks=quantile(value, probs=seq(0,1, by=0.25)),
      include.lowest=TRUE))

しかし、一部の分位数が同じであるため、機能しません。そのため、カット方法がわかりません。

>  'breaks' are not unique

例:q1=2 q2=5 q3=5 q4=8

この場合、どうすればよいですか?この場合、ランダムにカットできるかもしれません

4

1 に答える 1

4

これはうまくいくようです

x=c(2,5,5,8,10)
qnt <- quantile(x,seq(0,1,.25))

cut(x,unique(qnt),include.lowest=TRUE)
# [1] [2,5]  [2,5]  [2,5]  (5,8]  (8,10]
# Levels: [2,5] (5,8] (8,10]

別の答え。それでも 4 つのビンが必要な場合は、データがそれを正当化しない場合でも、方法があります!

set.seed(1024)
x <- sample(1:3,101,replace=TRUE)

binx <- rank(x,ties.method="random")%/%(ceiling(length(x)/4)+1)

そして、ここで効果を見ることができます。

binx_ranges <- by(x,binx,range)
# binx: 0
# [1] 1 1
# ------------------------------------------------------------ 
# binx: 1
# [1] 1 2
# ------------------------------------------------------------ 
# binx: 2
# [1] 2 3
# ------------------------------------------------------------ 
# binx: 3
# [1] 3 3

table(binx,x)
#     x
# binx  1  2  3
#    0 26  0  0
#    1  8 19  0
#    2  0 13 14
#    3  0  0 21
于 2013-05-14T17:28:52.563 に答える