Add New Row at Specific Index Position to Data Frame in R (Example)
This tutorial shows how to insert a new data frame row at a certain row index in the R programming language.
The post is structured as follows:
Sound good? Here’s the step-by-step process…
Construction of Example Data
We’ll use the following data as basement for this R tutorial:
data <- data.frame(x1 = 1:5, # Create example data x2 = 11:15, x3 = 21:25) data # Print example data # x1 x2 x3 # 1 1 11 21 # 2 2 12 22 # 3 3 13 23 # 4 4 14 24 # 5 5 15 25 |
data <- data.frame(x1 = 1:5, # Create example data x2 = 11:15, x3 = 21:25) data # Print example data # x1 x2 x3 # 1 1 11 21 # 2 2 12 22 # 3 3 13 23 # 4 4 14 24 # 5 5 15 25
As you can see based on the previously shown output of the RStudio console, our example data consists of five rows and three columns.
Let’s also create a vector object that we will use as new row:
new_row <- c(9, 99, 999) # Create example row new_row # Print example row # 9 99 999 |
new_row <- c(9, 99, 999) # Create example row new_row # Print example row # 9 99 999
Our new row vector contains three numeric values.
Example: Adding New Row at Certain Position of Data Frame Using rbind() Function
In this Example, I’ll show how to insert a new row to a data frame at a specific row index using the rbind function.
Consider the following R code:
data_new <- rbind(data[1:3, ], # Applying rbind function new_row, data[- (1:3), ]) data_new # Print new data frame # x1 x2 x3 # 1 1 11 21 # 2 2 12 22 # 3 3 13 23 # 4 9 99 999 # 41 4 14 24 # 5 5 15 25 |
data_new <- rbind(data[1:3, ], # Applying rbind function new_row, data[- (1:3), ]) data_new # Print new data frame # x1 x2 x3 # 1 1 11 21 # 2 2 12 22 # 3 3 13 23 # 4 9 99 999 # 41 4 14 24 # 5 5 15 25
As you can see, we have added our new row after the third index position of our data. You may modify the value 3 in the previous R code to use other row-indices.
The previous R code messed up the row names of our data frame. We may modify the row names of our new data to range from 1 to the number of rows of our data as shown below:
rownames(data_new) <- 1:nrow(data_new) # Modify row names data_new # Print data with updated row names # x1 x2 x3 # 1 1 11 21 # 2 2 12 22 # 3 3 13 23 # 4 9 99 999 # 5 4 14 24 # 6 5 15 25 |
rownames(data_new) <- 1:nrow(data_new) # Modify row names data_new # Print data with updated row names # x1 x2 x3 # 1 1 11 21 # 2 2 12 22 # 3 3 13 23 # 4 9 99 999 # 5 4 14 24 # 6 5 15 25
Note that the rbind function can be relatively slow when applied to large data sets. If you are looking for faster solutions, please have a look here.
Video, Further Resources & Summary
I have recently published a video on my YouTube channel, which explains the examples of this article. You can find the video below:
Please accept YouTube cookies to play this video. By accepting you will be accessing content from YouTube, a service provided by an external third party.
If you accept this notice, your choice will be saved and the page will refresh.
Furthermore, you may want to have a look at the other articles of this homepage:
- Add New Row to Data Frame
- Add New Column to Data Frame in R
- Append to Data Frame in Loop in R
- All R Programming Tutorials
On this page, I explained how to append new rows at a specific position of a data frame in R programming. Let me know in the comments, in case you have further questions. Furthermore, please subscribe to my email newsletter in order to get regular updates on new tutorials.
Statistics Globe Newsletter