【发布时间】:2023-04-06 10:13:02
【问题描述】:
让我们通过一些观察来考虑数据框。
我们将异常值称为匹配的观察结果
我想用
改变“大异常值”和“小异常值”
我目前的工作
让我们获取一些随机数据:
set.seed(32)
df1<-data.frame(c(rnorm(20),-100),c(runif(20),-5),c(rexp(20),7))
#Contains one when we have big outlier and 0 if not
big_outlier_frame<-(scale(df1)>3)*1
#Contains one when we have small outlier and 0 if not
small_outlier_frame<-(scale(df1)<(-3))*1
我的想法是将所有大异常值更改为 NA,然后进行替换。
df1[big_outlier_frame==1]<-NA
df1
library(dplyr)
df1 %>%
mutate(across(everything(), function(x) ifelse(!is.na(x), x,
2 * sd(x, na.rm = TRUE) + mean(x, na.rm = TRUE))))
之后,我想对小的异常值做类似的思考,但后来我发现了问题。替换大异常值后均值和标准差会发生变化!所以我必须做的是同时改变小和大的,但我不知道怎么做。你能帮我一把吗?
【问题讨论】: