# How to check for equality of three columns by row in R?

To check for equality of three columns by row, we can use logical comparison of equality with double equal sign (==) and & operator.

For example, if we have a data frame called df that contains three columns say C1, C2, and C3 and we want to check for equality of these three columns then we can use below given command −

df1

## Output

If you execute all the above given snippets as a single program, it generates the following output −

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

## Example 2

Following snippet creates a sample data frame −

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

The following dataframe is created −

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

In order to check whether values in all columns are equal for each row in df2, add the following code to the above snippet −

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

## Output

If you execute all the above given snippets as a single program, it generates the following output −

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