Я новичок в R и изучаю ее в основном через Stackoverflow. Я нашел два потока в этой теме для вычисления децилей в R. Однако оба метода, то есть dplyr::ntile
и quantile()
, дают разные результаты. Фактически, dplyr::ntile()
не может выводить надлежащие децили.Разница между функцией ntile и cut и then quantile() в R
Метод 1: Использование NTILE() Из R: splitting dataset into quartiles/deciles. What is the right method? нити, мы могли бы использовать 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
Если проанализировать это, мы видим, что нет десятого квантиля!
Способ 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()
функция?