繁体   English   中英

确定R中观测值的四分位数

[英]Determining the quartile of an observation in R

我有一个包含多个观测值及其分数的列表,因此当我查找观测值时,例如,

Var_1["obs_50"]

它给了我分数

obs_50 
   12 

是否有可能也知道该特定观测值的分数在哪四分之一?

看来您有一个命名向量。 您将需要使用分位数计算四分位数间隔,然后找出观察结果所在的位置。 findInterval函数对于第二部分很有用。

findInterval(Var_1["obs_50"], quantile(Var_1, c(0, .25, .5, .75, 1) )

我确实喜欢定义@@ pidd10在他现在删除的dplyr答案中提到的ntile函数的想法。

 # edited to fix missing parens and to now correct ntile for max value: 
 ntile <- function (obs, var, n_breaks) {
         findInterval(obs, 
                      quantile(var, seq(0,1,length=n_breaks+1 ),
                      right.closed=TRUE)) }

您可以使用cut离散化向量,例如:

set.seed(11)
print(x <- rnorm(20))
## [1] -0.59103110  0.02659437 -1.51655310 -1.36265335  1.17848916 -0.93415132
## [7]  1.32360565  0.62491779 -0.04572296 -1.00412058 -0.82843324 -0.34835173
## [13] -1.53829340 -0.25556525 -1.14994503  0.01232697 -0.22296954  0.88777165
## [19] -0.59215528 -0.65571812
cut(x, breaks = quantile(x, seq(0, 1, by = 0.25)),
    include.lowest = TRUE, labels = FALSE)
## 2 4 1 1 4 2 4 4 3 1 2 3 1 3 1 3 3 4 2 2

如果您不想离散化,也可以使用rank

rank(x) / length(x)
## [1] 0.50 0.80 0.10 0.15 0.95 0.30 1.00 0.85 0.70 0.25 0.35 0.55 0.05 0.60 0.20
## [16] 0.75 0.65 0.90 0.45 0.40

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM