R 如何过滤管道内的标准偏差

R 如何过滤管道内的标准偏差,r,tidyverse,R,Tidyverse,是否有一种有效的方法来过滤管道内低于2.5标准偏差的数字? 目前,我在管道外部计算std.dev值,然后在管道中使用该值进行过滤。 我相信一定有更有效的方法来实现这一点 set.seed(125) nd <- data.frame( x = rnorm(1000, 3, .1)) set.seed(125) nd%。$x%>%hist 您可以使用abs()重新排列方程式,以简化并仅使用sd()一次: ... %>% filter(abs(x - mean(x)) < 2.

是否有一种有效的方法来过滤管道内低于2.5标准偏差的数字? 目前,我在管道外部计算std.dev值,然后在管道中使用该值进行过滤。 我相信一定有更有效的方法来实现这一点

set.seed(125)
nd <- data.frame( x = rnorm(1000, 3, .1))
set.seed(125)
nd%。$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))
…%>%
过滤器(abs(x-平均值(x))<2.5*sd(x))
#或者使用内置的“scale()”函数
... %>% 
过滤器(abs(刻度(x))<2.5)
#或者,在注释中,使用between
... %>%
过滤器(介于(x,x-2.5*sd(x),x+2.5*sd(x))之间)
#或者是介于两者之间,而不是abs()
... %>% 
过滤器(在(刻度(x),-2.5和2.5)之间)

尝试使用
between
nd%>%过滤器(between(x,sd(x)*-2.5+平均值(x),sd(x)*-2.5+平均值(x))@akrun我的问题是计算管道外部的sd。有没有像
filter(x-between(sd(2.5))
这样的函数?SQL有一些功能similar@akrun好的,我知道了。你能把答案贴出来吗?我会接受的。
... %>%
  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))