Например, у меня есть пример данных о человеческом росте в кадре данных:
df <- data_frame(height = c(1.5, 1.6, 1.7, 1.8, 1.9), number = c(20, 30, 50, 30, 20))
Как я могу рассчитать квантиль 90% этого образца?
Я знаю, что ggplot2 имеетФункция может построить ecdf образца:
ggplot(df, aes(x = height, y = number)) + stat_ecdf()
, но мне нужен только указанный квантиль, а не график.
Я мог бы повторять каждый height
number
раз для создания вектора и использовать функцию quantile
для вектора, но по мере увеличения number
этот метод кажется очень неэффективным.
РЕДАКТИРОВАТЬ:
Кажется, stat_ecdf
не должны использоваться таким образом, и когда распределение данных перекошено:
df <- data_frame(height = c(1.5, 1.6, 1.7, 1.8, 1.9), number = c(100, 2, 3, 4, 5))
только квантиль повторного векторадает желаемый результат:
quantile(c(rep(1.5,100), rep(1.6,2), rep(1.7,3), rep(1.8,4), rep(1.9,5)))