用平均值替换数据框的异常值

Replace outliers of a dataframe with the mean value

我想找到数据框中的所有异常值并用变量(列)的平均值替换它们。

这是一个大数据框,由46个obs组成。 147 个变量。

我正在考虑做类似

的事情
new_df <- for (i in scaled.df){
  i[!i %in% boxplot.stats(i)$out]

然后替换 NULL 值,但是该函数创建了一个 NULL 对象,我认为原因是创建的新向量的长度不相同。

有什么想法吗?感谢

你可以写一个函数来做这个-

replace_outlier_with_mean <- function(x) {
  replace(x, x %in% boxplot.stats(x)$out, mean(x))  
}

申请多列可以使用lapply-

scaled.df[] <- lapply(scaled.df, replace_outlier_with_mean)

或在dplyr-

library(dplyr)
scaled.df %>% mutate(across(.fns = replace_outlier_with_mean))