How to Compare Three Columns in R

Spread the love

Comparing multiple columns in a data frame is a common data analysis task. When working with three columns in R, you may want to examine if they are equal, identify unique or overlapping values, or even compute summary statistics across them. This article will delve deep into techniques for comparing three columns in R, ranging from basic comparison to more advanced data manipulation tasks.


In R, a data frame is a versatile data structure that allows you to work with heterogeneous types (numeric, character, and so on). Let’s first learn how to set up a sample data frame that contains three columns for comparison.

Setting Up the Data Frame

Here’s how you can create a simple data frame with three columns:

# Creating a data frame
df <- data.frame(column1 = c(1, 2, 3, 4, 5),
                 column2 = c(5, 4, 3, 2, 1),
                 column3 = c(1, 2, 2, 4, 5))

Basic Column Comparison

Comparison Operators

You can use comparison operators like ==, !=, <, >, etc., to compare values between columns:

# Check if column1 is greater than column2
result <- df$column1 > df$column2

Row-wise Comparison

To compare all three columns in a row-wise manner, you can use logical operators:

# Check if all columns are equal for each row
result <- df$column1 == df$column2 & df$column2 == df$column3

Checking for Equality Across Columns

To check for equality across all three columns, we can use the apply() function:

result <- apply(df, 1, function(x) length(unique(x)) == 1)

This will give you a logical vector where TRUE indicates that all three columns are equal for that specific row.

Identifying Unique and Overlapping Values

Using unique( )

The unique() function can be used to find unique values in each column:

unique_values_column1 <- unique(df$column1)

Identifying Overlaps

To find overlapping values between three columns, you can use the intersect() function:

overlap <- Reduce(intersect, list(df$column1, df$column2, df$column3))

Using Conditional Statements

Using ifelse( )

You can use ifelse() to perform element-wise conditional operations:

df$result <- ifelse(df$column1 == df$column2 & df$column2 == df$column3, "All equal", "Not equal")

Applying Functions Across Columns

Using rowSums( ) and rowMeans( )

If you’re interested in summary statistics across the three columns for each row, you can use rowSums() and rowMeans():

df$row_sum <- rowSums(df[,1:3])
df$row_mean <- rowMeans(df[,1:3])

Advanced Techniques

Using dplyr

The dplyr package offers many powerful functions for column comparison and manipulation:


df <- df %>%
  mutate(result = case_when(
    column1 == column2 & column2 == column3 ~ "All equal",
    TRUE ~ "Not equal"

Machine Learning Models

You can also build machine learning models to predict one column based on the other two, thereby understanding their relationships in more complex ways. This, however, goes beyond mere comparison and delves into prediction and inference.


Comparing three columns in R can be approached in multiple ways, depending on your specific needs. You can use basic comparison operators, logical statements, or even advanced techniques with additional libraries and machine learning models. Understanding these methods will make you more versatile in data manipulation and analysis tasks in R.

Posted in RTagged

Leave a Reply