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 −

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

Example 1

Following snippet creates a sample data frame −

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

The following dataframe is created −

   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

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

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

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
Updated on: 2021-11-12T07:51:59+05:30

2K+ Views

Kickstart Your Career

Get certified by completing the course

Get Started
Advertisements