R 如何计算一行中的所有异常值?

R 如何计算一行中的所有异常值?,r,dataframe,R,Dataframe,在R中(我太新了),我试图创建一个outlier\u count变量,其中一个整数表示每行的异常值数量 假设我的数据集是这样的,假设“10”是一个异常值: var1 var2 var3 var4 var5 var6 var7 a 1 1 10 10 1 1 1 b 10 1 1 1 1 1 1 c 1 1 1 1 1 1 1 d 1 1

在R中(我太新了),我试图创建一个
outlier\u count
变量,其中一个整数表示每行的异常值数量

假设我的数据集是这样的,假设“10”是一个异常值:

    var1 var2 var3 var4 var5 var6 var7
a      1    1   10   10    1    1    1
b     10    1    1    1    1    1    1
c      1    1    1    1    1    1    1
d      1    1    1    1    1    1    1
e      1    1    1    1    1    1    1
f      1    1    1    1    1    1    1
我想以这样的方式结束:

    var1 var2 var3 var4 var5 var6 var7 outlier_count
a      1    1   10   10    1    1    1             2
b     10    1    1    1    1    1    1             1
c      1    1    1    1    1    1    1             0
d      1    1    1    1    1    1    1             0
e      1    1    1    1    1    1    1             0
f      1    1    1    1    1    1    1             0
所以,在每一行中,我知道有多少值是异常值

我尝试了几个函数,但当单个列为
NA
时,变量最终为
NA


有没有一种简单、防错的方法可以做到这一点?

在注释中进行解释并使用预期输出进行编辑后,它变得非常简单。
首先读取数据

df <- read.table(text = "
    var1 var2 var3 var4 var5 var6 var7
a      1    1   10   10    1    1    1
b     10    1    1    1    1    1    1
c      1    1    1    1    1    1    1
d      1    1    1    1    1    1    1
e      1    1    1    1    1    1    1
f      1    1    1    1    1    1    1
", header = TRUE)

请注意,您无需显式创建中间变量
out
。用上面的代码做一行。这取决于你。我希望它有可读的代码。

在注释中进行解释并使用预期输出进行编辑后,它变得非常简单。
首先读取数据

df <- read.table(text = "
    var1 var2 var3 var4 var5 var6 var7
a      1    1   10   10    1    1    1
b     10    1    1    1    1    1    1
c      1    1    1    1    1    1    1
d      1    1    1    1    1    1    1
e      1    1    1    1    1    1    1
f      1    1    1    1    1    1    1
", header = TRUE)

请注意,您无需显式创建中间变量
out
。用上面的代码做一行。这取决于你。我希望它有可读的代码。

如果你能为
df$var1
提供一个最小的数据集,这样问题就可以重现,那么就更容易发现问题。这些不是
“每行值”
,也不是离群值,
df$var1
是一列。嗨!谢谢你们两位@Heikki我想你可以使用任何你想要的数据集,比如
iris[sample(nrow(iris),10),]
(当然,只使用数字变量)@RuiBarradas是的,我试图知道
df$var1
值是否是特定行的异常值,并将其值添加到同一行的
outlier\u count
变量中。数据样本
iris[sample(nrow(iris),10),]
没有NAs。@Heikki-true,插入一些NA值很容易,但您也可以使用空气质量:
summary(airquality)
,Ozone和Solar.R具有NA值。如果您可以为
df$var1
提供最小数据集,以便重现问题,那么就更容易发现问题。这些不是
每行值
,无论是否存在异常值,
df$var1
都是一列。嗨!谢谢你们两位@Heikki我想你可以使用任何你想要的数据集,比如
iris[sample(nrow(iris),10),]
(当然,只使用数字变量)@RuiBarradas是的,我试图知道
df$var1
值是否是特定行的异常值,并将其值添加到同一行的
outlier\u count
变量中。数据样本
iris[sample(nrow(iris),10),]
没有NAs。@Heikki-true,插入一些NA值很容易,但您也可以使用空气质量:
摘要(空气质量)
,臭氧和太阳能。R有NA值。谢谢!我添加了
na.rm=TRUE
,以避免计算na值时出现错误。然后如何指定应计算哪些列?假设我不想把
var7
包括在总数中。@afontcu你可以做
sapply(df[,1:6],…)
sapply(df[,-7],…)
。在第一种情况下,你说你想对哪些列应用函数,在第二种情况下,你不想对哪些列应用函数。非常感谢你!工作起来很有魅力。谢谢你的耐心。谢谢!我添加了
na.rm=TRUE
,以避免计算na值时出现错误。然后如何指定应计算哪些列?假设我不想把
var7
包括在总数中。@afontcu你可以做
sapply(df[,1:6],…)
sapply(df[,-7],…)
。在第一种情况下,你说你想对哪些列应用函数,在第二种情况下,你不想对哪些列应用函数。非常感谢你!工作起来很有魅力。谢谢你的耐心。