How to Add Column If It Does Not Exist in R


You can use the following custom function to add one or more columns to a data frame in R if they do not already exist:

add_cols <- function(df, cols) {
  add <- cols[!cols %in% names(df)]
  if(length(add) != 0) df[add] <- NA
  return(df)
}

The following example shows how to use this syntax in practice.

Example: Add Column If It Does Not Exist in R

Suppose we have the following data frame in R:

#create data frame
df <- data.frame(team=c('A', 'A', 'A', 'A', 'B', 'B', 'B'),
                 position=c('Gu', 'Fo', 'Fo', 'Fo', 'Gu', 'Gu', 'Fo'),
                 points=c(18, 22, 19, 14, 14, 11, 20))

#view data frame
df

  team position points
1    A       Gu     18
2    A       Fo     22
3    A       Fo     19
4    A       Fo     14
5    B       Gu     14
6    B       Gu     11
7    B       Fo     20

Suppose we would like to add the following columns to the data frame if they do not already exist:

  • points
  • assists
  • rebounds

We can use a custom function called add_cols to do so:

#define custom function to add columns to data frame if they do not exist
add_cols <- function(df, cols) {
  add <- cols[!cols %in% names(df)]
  if(length(add) !=0 ) df[add] <- NA
  return(df)
}

#add three columns if they don't already exist
df <- add_cols(df, c('points', 'assists', 'rebounds'))

#view updated data frame
df

  team position points assists rebounds
1    A       Gu     18      NA       NA
2    A       Fo     22      NA       NA
3    A       Fo     19      NA       NA
4    A       Fo     14      NA       NA
5    B       Gu     14      NA       NA
6    B       Gu     11      NA       NA
7    B       Fo     20      NA       NA

Notice that the assists and rebounds columns were added to the data frame while the points column was not since it already existed.

Also note that R simply fills in each value in the new columns with NA values.

Additional Resources

The following tutorials explain how to perform other common tasks in R:

How to Add Column to Data Frame Based on Other Columns in R
How to Add an Index (numeric ID) Column to a Data Frame in R
How to Add an Empty Column to a Data Frame in R

Leave a Reply

Your email address will not be published. Required fields are marked *