是否有一种有效的方法可以过滤掉 2.5 标准以下的数字。管道内的偏差? 我目前计算标准。 dev 管道外的值,然后在管道中使用它进行过滤。 我确信必须有一种更有效的方法来完成此任务。
set.seed(125)
nd <- data.frame( x = rnorm(1000, 3, .1))
我目前的方法
sdx <- sd(nd$x) * 2.5 + mean(nd$x)
sdx1 <- sd(nd$x) * -2.5 + mean(nd$x)
library(tidyverse)
nd %>% filter(x < sdx, x > sdx1) %>% .$x %>% hist
最佳答案
您可以使用 abs()
重新排列您的等式以简化并且只使用一次 sd()
:
... %>%
filter(abs(x - mean(x)) < 2.5 * sd(x))
# or use the built-in `scale()` function
... %>%
filter(abs(scale(x)) < 2.5)
# or, as in comments, use between
... %>%
filter(between(x, x - 2.5 * sd(x), x + 2.5 * sd(x)))
# or some between instead of abs()
... %>%
filter(between(scale(x), -2.5, 2.5))
关于r - 如何过滤管道内的标准偏差,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54934599/