【发布时间】:2018-12-31 07:58:32
【问题描述】:
我有一个数据集,我想创建一个附加列并希望标记异常值(超过 IQR 的 1.5 倍)。我目前正在使用此代码:
#Add additional column for flagging outliers that are beyond 1.5*interquartile range
plotdata$OUTLIERFLAG <- 0
#Cycle through variables
for (i in 1: length(unique(plotdata$variable))){
pms <- unique(plotdata$variable)[i]
dats <- subset(plotdata, plotdata$variable ==pms)
#Cycle through Sampling locations
for (bore in unique(plotdata$Sample.Point)){
subdats <- dats[dats$Sample.Point==bore,]
x1 <- match(boxplot.stats(subdats$value2)$out, subdats$value2)
ifelse(x1==0, NULL, plotdata[rownames(subdats[x1,]),]$OUTLIERFLAG <- 1)
}
}
但是,有时代码不起作用。对于相同的值,我将一个标记为异常值,而另一个则没有。 请帮忙
【问题讨论】:
-
您需要提供一个可重现的数据集示例来说明您的问题。
-
请提供一个可重复的数据示例。提供的代码 sn-p 与所提出的问题没有直接关系。此外,您确定要将值 > IQR 视为异常值,还是将值 > 75% 百分位?