How to Delete Multiple Columns in R

Spread the love

Removing or deleting columns from a data frame is a routine task in data analysis and data manipulation. This task may appear straightforward, but when it comes to deleting multiple columns, especially based on certain conditions, you may require a variety of techniques. In this comprehensive article, we will explore several ways to delete multiple columns in R.


R is a versatile language used extensively for data manipulation and statistical analysis. One of the primary data structures in R is a data frame, which is essentially a table of data. Deleting columns from a data frame is sometimes necessary for data cleaning, transformation, or other preprocessing steps.

Using Basic Subsetting

Delete by Column Name

In R, you can delete columns by setting them to NULL:

df <- data.frame(a = 1:5, b = 6:10, c = 11:15)
df$b <- NULL

To delete multiple columns:

df <- data.frame(a = 1:5, b = 6:10, c = 11:15)
df[c("a", "c")] <- list(NULL)

Delete by Column Index

To delete columns by their index, you can subset the data frame:

df <- df[, -c(1, 3)]

Using the subset( ) Function

The subset() function allows you to delete columns by excluding them explicitly:

df <- data.frame(a = 1:5, b = 6:10, c = 11:15)
df <- subset(df, select = -c(a, c))

Using dplyr

The dplyr package offers an elegant and readable way to delete columns.

select( ) function

You can use the select() function and negate the columns you wish to remove:

df <- data.frame(a = 1:5, b = 6:10, c = 11:15)
new_df <- df %>% select(-c(a, c))

select_if( ) function

When you want to conditionally remove multiple columns, you can use select_if():

new_df <- df %>% select_if(~!any(. == 10))

Conditional Deletion

You can also delete columns based on conditions:

Delete Columns with Low Variance

new_df <- df[, sapply(df, var, na.rm = TRUE) > 1]

Delete Columns with Too Many NAs

threshold <- 0.8 * nrow(df)
new_df <- df[, colSums( < threshold]

Automating Column Deletion

In certain cases, you might want to automate the column deletion process:

Looping Over Columns

You can loop over each column and apply a condition for its removal:

for(col in names(df)) {
  if(mean([[col]])) > 0.8) {
    df[[col]] <- NULL

Caveats and Precautions

  1. Data Integrity: Always double-check to ensure that you’re not inadvertently deleting important columns.
  2. Data Backup: It is advisable to keep a backup before performing deletion operations.
  3. R Version: Make sure your R version is compatible with the methods and libraries you’re using.


R provides a plethora of ways to delete multiple columns in a data frame. Depending on your specific use-case, you might opt for basic subsetting, use the subset() function, or employ the powerful dplyr package. Conditional deletion and automated column removal can also be done efficiently. Regardless of the method you choose, ensure you’re taking the necessary precautions to maintain data integrity.

Posted in RTagged

Leave a Reply