问题描述
让我们说我们有以下一系列值
int
根据直方图,我们在四个bin中具有来自给定序列的以下数量的值,
10,10,14,22,28
很明显,值的9/12(75%)位于区间[10,15);值的11/12(91%)位于间隔9:[10,15)
0:[15,20)
2:[20,25)
1:[25,30)
中。我很想提出一个函数,该函数需要一个序列和一个百分比,并返回所要求的百分比所在的区间范围。
例如:[10,25)
应该返回query(Series=c(10,28),Pct=91)
。我对R有点陌生,如果有人可以将我指向该任务的内置函数或为我提供实现会有所帮助。
预先感谢
解决方法
quantile(c(10,10,14,22,28),c(0,0.91))
这并不能完全产生您想要的输出,您要么找到22到28之间的中点,要么将其四舍五入为合适的存储桶大小以进行绘图。这是对这两个点之间的分位数进行线性插值,即22是第10/11分位数(90.9090 ...%),而28是100%。 91%的分数是22.06。
,如果合并宽度为5
,也许这将接近您的目标(类似于@pseudospin的答案)
> 5*ceiling(quantile(c(10,0.91))/5)
0% 91%
10 25