Как рассчитать 99-й процентиль набора данных - PullRequest
0 голосов
/ 19 февраля 2020

У меня есть набор данных средних весов двух размеров выборки, у меня 100 000 тестов, и я пытаюсь найти 99-й процентиль, но я не понимаю, как это сделать, я выяснил средний квартиль, выполнив следующее:

summary(Lifts)
 Large           Small      
 Min.   : 62.5   Min.   : 54.2  
 1st Qu.: 99.1   1st Qu.: 96.0  
 Median :106.0   Median :106.0  
 Mean   :106.0   Mean   :106.0  
 3rd Qu.:112.9   3rd Qu.:116.0  
 Max.   :147.5   Max.   :156.8 

Мне нужно найти 99-й процентиль как большого, так и малого, я попытался использовать команду квартиля;

quantile(Lifts, probs = c(0, 0.25, 0.50, 0.99))
Error in `[.data.frame`(x, order(x, na.last = na.last, decreasing = decreasing)) : 
  undefined columns selected

Но я получаю эту ошибку

любая помощь будет оценена

Ответы [ 2 ]

3 голосов
/ 19 февраля 2020

Если мы укажем столбец (например, используя нотацию $), мы избавимся от ошибки:

quantile(Lifts$Large, probs = c(0, 0.25, 0.50, 0.99))

Или

quantile(Lifts$Small, probs = c(0, 0.25, 0.50, 0.99))
2 голосов
/ 19 февраля 2020

Как правило, чтобы применить функцию ко всем столбцам фрейма данных, мы можем использовать lapply, который также работает с quantile.

lapply(lifts, quantile, probs=c(0, 0.25, 0.50, 0.99))
# $large
#       0%     25%     50%     99% 
#   14.400 161.675 488.450 950.506 
# 
# $small
#      0%    25%    50%    99% 
#   0.900 30.800 43.650 97.744 

Мы также можем использовать sapply, который делает то же самое, но дает в качестве выходной матрицы.

sapply(lifts, quantile, probs=c(0, 0.25, 0.50, 0.99))
#       large  small
# 0%   14.400  0.900
# 25% 161.675 30.800
# 50% 488.450 43.650
# 99% 950.506 97.744

Данные

lifts <- structure(list(large = c(489.9, 734.5, 905.6, 41.9, 950.2, 73.9, 
444.7, 950.8, 303.9, 539, 399.4, 429.5, 670.2, 39.1, 324.6, 829.6, 
97.9, 216.6, 500.1, 364.4, 762.6, 205.7, 191.6, 128.6, 749.2, 
185, 736.9, 46.9, 114.2, 774.4, 626.5, 42.5, 52.5, 724.3, 518.3, 
932.7, 602.5, 14.4, 794.9, 149.7, 621.6, 674.2, 685.1, 153.9, 
42.3, 487, 787.5, 351.6, 689.3, 862.3), small = c(56.5, 63.6, 
49.5, 76.7, 78, 25.8, 57.8, 19.2, 27.7, 38.3, 36.4, 4.4, 89.2, 
68.8, 36.1, 71.8, 69.1, 35.8, 38.2, 26.9, 95.5, 30.7, 43.2, 58.8, 
44.1, 35.4, 91.2, 37.1, 99.9, 94.5, 52, 38.2, 40.1, 50.9, 81.7, 
7.5, 77.5, 71.9, 70.6, 8.2, 90.1, 31.1, 3.4, 52, 0.9, 30.5, 12.7, 
45.6, 34.2, 13.4)), class = "data.frame", row.names = c(NA, -50L
))
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...