2017-01-14 19 views
4

です。私はRには新しく、ほとんどはStackoverflowを通して学習しています。 Rのデシルを計算するために、このトピックで2つのスレッドが見つかりました。しかし、両方のメソッド、すなわちdplyr::ntilequantile()は異なる出力を生成します。実際、dplyr::ntile()は適切なデシールを出力できません。ntileとcutの違い、そしてquantile()関数の違いはR

方法1:R: splitting dataset into quartiles/deciles. What is the right method?スレッドからNTILE() を使用して、我々はntile()を使用することができます。

vector<-c(0.0242034679584454, 0.0240411606258083, 0.00519255930109344, 
    0.00948031338483081, 0.000549450549450549, 0.085972850678733, 
    0.00231687756193192, NA, 0.1131625967838, 0.00539244534707915, 
    0.0604885614579294, 0.0352030947775629, 0.00935626135385923, 
    0.401201201201201, 0.0208212839791787, NA, 0.0462887301644538, 
    0.0224952741020794, NA, NA, 0.000984952654008562) 

ntile(vector,10) 

出力は次のとおりです:

は、ここに私のコードです

ntile(vector,10) 
5 5 2 3 1 7 1 NA 8 2 7 6 3 8 4 NA 6 4 NA NA 1 

我々はこれを分析する場合は、当方は一切の10分位がないことを参照してください!

方法2:今、使用して分位数() 、のはHow to quickly form groups (quartiles, deciles, etc) by ordering column(s) in a data frameスレッドからメソッドを使用してみましょう。ここで

は私のコードです:

as.numeric(cut(vector, breaks=quantile(vector, probs=seq(0,1, length = 11), na.rm=TRUE),include.lowest=TRUE)) 

出力されます:

7 6 2 4 1 9 2 NA 10 3 9 7 4 10 5 NA 8 5 NA NA 1 

私たちが見ることができるように、出力は完全に異なっています。私はここで何が欠けていますか?私はどんな考えにも感謝します。

これはntile()のバグですか?

答えて

5

dplyr::ntileNAは、常に最後(最高位)です。このため、このケースでは10番目の十進法が表示されません。あなたがNA Sを考慮しない十分位数をしたい場合は、私は次の使用1 hereのような関数を定義することができます。また

ntile_na <- function(x,n) 
{ 
    notna <- !is.na(x) 
    out <- rep(NA_real_,length(x)) 
    out[notna] <- ntile(x[notna],n) 
    return(out) 
} 

ntile_na(vector, 10) 
# [1] 6 6 2 4 1 9 2 NA 9 3 8 7 3 10 5 NA 8 5 NA NA 1 

quantileは、あなたがあるデフォルトを使用している分位を計算する9つの方法を持っています番号7(異なるtypeの場合は?stats::quantile、それについてはhereを確認できます)。

あなたは

as.numeric(cut(vector, 
       breaks = quantile(vector, 
           probs = seq(0, 1, length = 11), 
           na.rm = TRUE, 
           type = 2), 
       include.lowest = TRUE)) 
# [1] 6 6 2 4 1 9 2 NA 9 3 8 7 3 10 5 NA 8 5 NA NA 1 

を試みる場合は、ntileを使用したものと同じ結果を持っています。

要約:これはバグではなく、実装されている方法が異なります。

関連する問題