# Add New Column to Data Frame in R

In this tutorial, I’ll illustrate how to **add a new column to a data frame** in R programming.

The table of content looks like this:

- Creation of Example Data
- Example 1: Add Column with $-Operator
- Example 2: Add Column with Square Brackets
- Example 3: Add Column with cbind Function
- Video, Further Resources & Summary

Let’s dig in.

## Creation of Example Data

The examples of this R tutorial will be based on the following data frame:

data <- data.frame(x1 = 1:5, # Create example data x2 = letters[1:5]) data # Print example data # x1 x2 # 1 1 a # 2 2 b # 3 3 c # 4 4 d # 5 5 e

Our example data consists of five rows and the two variables x1 and x2.

Furthermore, we have to create an example vector that we can add as new column to our data frame:

vec <- c(3, 2, 3, 2, 3) # Create example vector vec # Print example vector # 3 2 3 2 3

Our example vector consists of five numeric values. Note that the number of rows of our data frame and the length of our vector are equal.

Now, let’s add the vector as new variable to our data frame…

## Example 1: Add Column with $-Operator

In Example 1, you’ll learn how to add a new column to a data frame with the $-Operator. First, we are going to replicate our original example data:

data_1 <- data # Replicate example data

Now, we can add our example vector to the data frame as follows:

data_1$new_col <- vec # Add new column to data

Let’s print the new data frame to the RStudio console:

data_1 # Print new data # x1 x2 new_col # 1 1 a 3 # 2 2 b 2 # 3 3 c 3 # 4 4 d 2 # 5 5 e 3

As you can see, the new data frame consists of the same variables as our input data and in addition of the new variable new_col.

## Example 2: Add Column with Square Brackets

Example 1 has shown how to add a new variable to a data frame with the $-Operator. However, there are many different ways how to do this and in this example I’ll show you how to concatenate a vector to a data frame with square brackets.

Have a look at the following R code:

data_2 <- data # Replicate example data data_2["new_col"] <- vec # Add new column to data

data_2 contains our original data as well as our example vector vec.

## Example 3: Add Column with cbind Function

Another alternative for creating new variables in a data frame is the cbind function. The cbind function can be used to add columns to a data matrix as follows:

data_3 <- data # Replicate example data data_3 <- cbind(data, new_col = vec) # Add new column to data

Again, the output is a data frame consisting of our original data and a new column.

## Video, Further Resources & Summary

Do you need more information on the contents of this article? Then you may want to have a look at the following video of my YouTube channel. In the video tutorial, I’m explaining the contents of this article in RStudio:

Furthermore, you might want to have a look at the other tutorials of my website. Some tutorials about data manipulation in R can be found below:

- The cbind Function
- Append New Column & Row to Data Frame in for-Loop
- How to Rename a Column Name in R
- Convert Data Frame Column to Vector in R
- The R Programming Language

In this R tutorial you learned how to **append a vector to a data frame**. Don’t hesitate to let me know in the comments section, if you have further questions.

## 6 Comments. Leave new

Most of the time being a data scientist, 50% of the work is already spent with processing data with the right programming logic , debuggibn, fixing, testing instead of spending time on real statistic

Definitely agreed ðŸ™‚

Does this retain the vector order?

For example, the vector was obtained from the dataframe, manipulated, then returned there. Is this method is as good as a more sophisticated join function?

Hey Ahmed,

The new data frame column will have the same order as the vector at the point when you are adding it.

Regards,

Joachim

How do I add a column to a specific position in a big dataframe?

Thank you!

Hey Rupal,

Please have a look at this tutorial. It explains how to insert a new column between two specific variables.

Regards,

Joachim