例如,我在一个DataFrame中有一个人类身高的样本数据:
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)))