如何在R中逐行检查三列的相等性?

要逐行检查三列是否相等,我们可以使用双等号 (==) 和 & 运算符进行相等的逻辑比较。

例如,如果我们有一个名为 df 的数据框,其中包含三列 C1、C2 和 C3,并且我们想要检查这三列是否相等,那么我们可以使用下面给定的命令 -

df$All_equal<-df$C1==df$C2 & df$C2==df$C3

示例 1

以下代码段创建了一个示例数据框 -

x1<-rpois(20,1)
x2<-rpois(20,1)
x3<-rpois(20,1)
df1<-data.frame(x1,x2,x3)
df1

创建以下数据框 -

   x1 x2 x3
1  4  0  1
2  1  2  1
3  0  3  1
4  0  2  0
5  0  2  3
6  1  1  2
7  1  1  0
8  1  0  0
9  0  0  0
10 0  1  0
11 1  2  4
12 2  1  4
13 0  1  0
14 0  3  1
15 1  0  1
16 0  0  0
17 1  0  1
18 0  1  0
19 0  1  0
20 1  0  1

为了检查 df1 中每一行的所有列中的值是否相等,请将以下代码添加到上述代码段中 -

x1<-rpois(20,1)
x2<-rpois(20,1)
x3<-rpois(20,1)
df1<-data.frame(x1,x2,x3)
df1$All_equal<-df1$x1==df1$x2 & df1$x2==df1$x3
df1
输出结果

如果您将上述所有给定的片段作为单个程序执行,它会生成以下输出 -

   x1 x2 x3 All_equal
1  4  0  1  FALSE
2  1  2  1  FALSE
3  0  3  1  FALSE
4  0  2  0  FALSE
5  0  2  3  FALSE
6  1  1  2  FALSE
7  1  1  0  FALSE
8  1  0  0  FALSE
9  0  0  0  TRUE
10 0  1  0  FALSE
11 1  2  4  FALSE
12 2  1  4  FALSE
13 0  1  0  FALSE
14 0  3  1  FALSE
15 1  0  1  FALSE
16 0  0  0  TRUE
17 1  0  1  FALSE
18 0  1  0  FALSE
19 0  1  0  FALSE
20 1  0  1  FALSE

示例 2

以下代码段创建了一个示例数据框 -

y1<-sample(0:1,20,replace=TRUE)
y2<-sample(0:1,20,replace=TRUE)
y3<-sample(0:1,20,replace=TRUE)
df2<-data.frame(y1,y2,y3)
df2

创建以下数据框 -

   y1 y2 y3
1  0  1  0
2  0  1  1
3  1  1  1
4  1  0  0
5  1  1  1
6  0  0  0
7  1  0  0
8  1  1  0
9  1  0  1
10 1  0  1
11 1  1  1
12 0  0  1
13 0  1  0
14 0  1  0
15 0  0  0
16 0  1  1
17 0  0  1
18 1  0  0
19 1  1  0
20 0  0  1

为了检查 df2 中每一行的所有列中的值是否相等,请将以下代码添加到上述代码段中 -

y1<-sample(0:1,20,replace=TRUE)
y2<-sample(0:1,20,replace=TRUE)
y3<-sample(0:1,20,replace=TRUE)
df2<-data.frame(y1,y2,y3)
df2$All_equal<-df2$y1==df2$y2 & df2$y2==df2$y3
df2
输出结果

如果您将上述所有给定的片段作为单个程序执行,它会生成以下输出 -

   y1 y2 y3 All_equal
1  0  1  0  FALSE
2  0  1  1  FALSE
3  1  1  1  TRUE
4  1  0  0  FALSE
5  1  1  1  TRUE
6  0  0  0  TRUE
7  1  0  0  FALSE
8  1  1  0  FALSE
9  1  0  1  FALSE
10 1  0  1  FALSE
11 1  1  1  TRUE
12 0  0  1  FALSE
13 0  1  0  FALSE
14 0  1  0  FALSE
15 0  0  0  TRUE
16 0  1  1  FALSE
17 0  0  1  FALSE
18 1  0  0  FALSE
19 1  1  0  FALSE
20 0  0  1  FALSE