有没有办法在计算数据框中的异常值时排除 NA 但在最终输出中仍包含带有 NA 的行?

Is there a way to exclude NA while calculating outliers in a data frame but still include rows with NA in the final output?

例如,我正在删除大于 3SD 的离群值,但我的数据集中有 NA。我想计算 SD,删除那些异常值 忽略 那些在计算中有 NAs 的,但在最终输出中保留那些有 NAs 的。似乎使用 na.rm 函数会在生成的最终数据框中删除 NA,所以我想知道是否还有其他方法可以解决这个问题?

我目前的密码是:

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

谢谢!

我们可以有一个 | 条件 is.na 不删除 NA

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