如何在 R 中按行检查三列是否相等?

r programmingserver side programmingprogramming更新于 2025/4/6 10:07:17

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

例如,如果我们有一个名为 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

相关文章