R 为异常值标记创建新变量

R 为异常值标记创建新变量,r,outliers,R,Outliers,所以,我对给定的数据集进行离群点检测。顺便说一下,这是在R中完成的 通过函数boxplot.stats(x)$out,我可以获得检测异常值的变量的信息。对吗?我得到的观测值被认为是异常值 我想做的是在数据集中创建一个新的列,它可以是二进制的,并为异常值的观测值设置1,为非异常值的观测值设置0 例如: Var1 Var2 asd 111 dsa 15 ssa 10 aas 9 dad 10 dda 95 假设观测值1和6被检测为异常值: Var1 Va

所以,我对给定的数据集进行离群点检测。顺便说一下,这是在R中完成的

通过函数boxplot.stats(x)$out,我可以获得检测异常值的变量的信息。对吗?我得到的观测值被认为是异常值

我想做的是在数据集中创建一个新的列,它可以是二进制的,并为异常值的观测值设置1,为非异常值的观测值设置0

例如:

Var1   Var2
asd    111
dsa    15
ssa    10
aas    9
dad    10
dda    95
假设观测值1和6被检测为异常值:

Var1   Var2
asd    111
dda    95
当我使用:

outlier <- boxplot.stats(Var2)$out

这可能真的很容易做到,但我不知道怎么做。有什么想法吗?

您可以尝试以下方法:

Var1   Var2   Outlier
asd    111    1
dsa    15     0
ssa    10     0
aas    9      0
dad    10     0
dda    95     1
require(data.table)

data <- fread('Var1   Var2
asd    111
dsa    15
ssa    10
aas    9
dad    10
dda    95 ')

outliers <- fread('Var1   Var2
asd    111
dda    95 ')

data[, Outlier:= ifelse(paste(Var1, Var2) %in% paste(outliers$Var1, outliers$Var2), 1, 0)]
require(data.table)

data说你的data.frame名称是“data”,你在“outlier”中有离群值

然后这样做:

data$outlier = 0

data[which(data$Var2 %in% outlier),"outlier"] <- 1
data$outlier=0
数据[其中数据$Var2%在%outlier中),“outlier”]您可以使用
boxplot.stats(Var2)$out中的值的
min()
,通过
ifelse()
计算新变量

假设
数据
是您的数据帧:

data$outliers <- ifelse(data$Var2 < min(boxplot.stats(data$Var2)$out), 0, 1)

data$outliers如果向量中有异常值

outlier <- c(111,90)
异常值
within(df,outlier <- ifelse(df$var1%in%outlier,1,0))

var1 var2 outlier
1  111  asd       1
2   10  csd       0
3   11  pud       0
4   12  dud       0
5   90  kud       1