为离群值标签创建新变量
Creating a new variable for an outlier tag
所以,我正在对给定的数据集进行离群值检测。顺便说一下,这是在 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
我只收到离群值 - 我在控制台中得到 111 和 95。
所以..在我检测到这个异常值之后我想做以下事情:
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)]
假设你的 data.frame 名字是 "data" 并且你在 "outlier"
中有离群值
然后这样做:
data$outlier = 0
data[which(data$Var2 %in% outlier),"outlier"] <- 1
您可以使用 boxplot.stats(Var2)$out
中值的 min()
通过 ifelse()
计算新变量。
假设 data
是您的数据框:
data$outliers <- ifelse(data$Var2 < min(boxplot.stats(data$Var2)$out), 0, 1)
这样您就不必先将异常值保存在另一个冗余对象中。
如果你的向量中有异常值,比如
outlier <- c(111,90)
您可以在函数内使用 ifelse 函数对二进制变量进行子集化
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
所以,我正在对给定的数据集进行离群值检测。顺便说一下,这是在 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
我只收到离群值 - 我在控制台中得到 111 和 95。 所以..在我检测到这个异常值之后我想做以下事情:
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)]
假设你的 data.frame 名字是 "data" 并且你在 "outlier"
中有离群值然后这样做:
data$outlier = 0
data[which(data$Var2 %in% outlier),"outlier"] <- 1
您可以使用 boxplot.stats(Var2)$out
中值的 min()
通过 ifelse()
计算新变量。
假设 data
是您的数据框:
data$outliers <- ifelse(data$Var2 < min(boxplot.stats(data$Var2)$out), 0, 1)
这样您就不必先将异常值保存在另一个冗余对象中。
如果你的向量中有异常值,比如
outlier <- c(111,90)
您可以在函数内使用 ifelse 函数对二进制变量进行子集化
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