R:将 which() 与 quantile() 的输出一起使用?

R: Using which() with output of quantile()?

所以,我试图从数据框 df 中获取列 a 中的值,它是列 b 的第 90 个百分位数。我使用以下代码获取分位数的值:

p = quantile(df$b, c(0.9))

在此之后,我想用它来获取值的行号,这样我就可以用它来获取a列中的相应值:

which(df$b == p)

但出于某种原因它只给出了

的输出
integer(0)

我用实际值 1.68 替换了变量 p,它起作用了,创建另一个只有 1.68 的变量也起作用,但是将它与分位数的结果一起使用永远不会给出正确的值。

我试过使用 as.numeric,使用 p[[1]]as.double。结果没有任何变化。 在理解为什么会发生这种情况以及是否有其他方法可以解决这个问题时,我们将不胜感激。

编辑:澄清一下,条目正好位于第 90 个百分位数,使用由分位数函数 return 编辑的硬编码值将 return 这些。问题出在我们使用quantile输出的which函数

'quantile' 将为您提供数据的 90% 百分位数,它可能是也可能不是数据中的值,因此如果您想要最接近 90% 百分位数的值,则需要匹配它有点不同:

您的数据:

df <- data.frame(b = runif(50))

第 90 个百分位数

p = quantile(df$b, c(0.9))

最接近第 90 个百分位数的指数:

index <- which(abs(df$b - p) == (min(abs(df$b - p), na.rm = TRUE)))
index

使用索引从数据框中获取值:

df$b[index]