Есть ли способ исключить NA при расчете выбросов во фрейме данных, но все же включить строки с NA в окончательный результат? - PullRequest
2 голосов
/ 23 марта 2020

Например, я удаляю выбросы больше 3SD, но в моем наборе данных есть NA. Я хотел бы вычислить SD, убрать эти выбросы , игнорируя те, которые имеют NA в расчете, но сохранив те, которые имеют NA в конечном результате. Кажется, что использование функции na.rm удалит NA в конечном произведенном фрейме данных, поэтому мне интересно, есть ли другой способ go об этом?

Текущий код, который у меня есть:

df_final = df %>% 
  filter(height < mean(height, na.rm = T) + (3*sd(df$height, na.rm=T)))

Спасибо!

1 Ответ

3 голосов
/ 23 марта 2020

У нас может быть | условие с is.na, чтобы не удалять NA строки

library(dplyr)
df %>% 
   filter((height < (mean(height, na.rm = TRUE) +
                    3* sd(height, na.rm=TRUE)))|is.na(height))
...