как фильтровать для стандартного отклонения в трубе - PullRequest
0 голосов
/ 01 марта 2019

Есть ли эффективный способ отфильтровать числа, скажем, до 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

1 Ответ

0 голосов
/ 01 марта 2019

Вы можете изменить свое уравнение с помощью 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))
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...