【发布时间】:2013-10-06 14:45:05
【问题描述】:
正如标题中介绍的那样,我想从向量中选择 10% 的最高值和 10% 的最低值。我怎样才能做到这一点?
有人可以帮助我吗? 非常感谢
【问题讨论】:
-
还有,看看
?quantile
正如标题中介绍的那样,我想从向量中选择 10% 的最高值和 10% 的最低值。我怎样才能做到这一点?
有人可以帮助我吗? 非常感谢
【问题讨论】:
?quantile
这是一个大概占10%的例子:
v <- rnorm(100)
sort(v)[1:(length(v)/10)] # lowest, in increasing order.
sort(v, decreasing=TRUE)[1:(length(v)/10)] # highest, in decreasing order.
【讨论】:
head 和tail 从两端获取值?
head 有n 参数,但这如何让您获得第一个10%?
这将返回一个包含 x 底部和顶部 10% 的向量:
> set.seed(123)
> x<-rnorm(100)
> x[{q<-rank(x)/length(x);q<0.1 | q>=0.9}]
[1] 1.558708 1.715065 -1.265061 1.786913 -1.966617 -1.686693 -1.138137
[8] 1.253815 -1.265396 2.168956 -1.123109 1.368602 1.516471 -1.548753
[15] 2.050085 -2.309169 -1.220718 1.360652 2.187333 1.532611
【讨论】:
请注意,排序可能会很慢。对于小向量,您不会注意到这么多,但如果您想对非常大的向量执行此操作,那么对整个向量进行排序可能会非常慢,您不需要对向量进行完全排序。
查看 sort 和 sort.int 帮助页面上的 partial 参数,了解如何进行部分排序,它仍然可以为您提供顶部和底部 10% 而无需进行完整排序(@ 987654324@ 函数在内部使用部分排序,因此在某些情况下应该比完全排序更快,但自己进行部分排序可以消除一些 quantile 开销并提高速度。
【讨论】: