gpt4 book ai didi

R:使用 which() 和 quantile() 的输出?

转载 作者:行者123 更新时间:2023-12-02 03:50:08 32 4
gpt4 key购买 nike

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

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

之后,我想用它来获取该值的行号,以便我可以使用它来获取a列中的相应值:

which(df$b == p)

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

integer(0)

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

我尝试过使用 as.numericp[[1]]as.double。结果没有任何改变。如果您能帮助理解为什么会发生这种情况以及是否有其他方法可以解决此问题,我们将不胜感激。

编辑:澄清一下,有一些条目恰好位于第 90 个百分位数,并且使用分位数函数返回的硬编码值将返回这些条目。当我们使用分位数的输出时,问题出现在which函数中。

最佳答案

“分位数”将为您提供数据的 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]

关于R:使用 which() 和 quantile() 的输出?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45693030/

32 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com