How to Add Rows to an R Dataframe [With Code Examples]

In this article, we will look at how to add rows to an R dataframe efficiently. Data manipulation is a necessary skill for any data analyst or scientist, and adding rows is no exception in R programming. We’ve got a couple of possible ways to handle this – we’re going to be focusing on the rbind() function and the dplyr package.

Options for Adding Rows To a Data Frame In R

In this section, we will explore three common methods to add rows or columns in a dataframe in R:

  • Using the rbind() function to combine two dataframes
  • Using the cbind() function to add a new column to a dataframe
  • Using merge() to combine two dataframes using a common column to join them

1. Using the rbind() function: The rbind() function is used to attach rows to a dataframe. This approach requires both dataframes have the same number of columns and similar data types. For example:

df1 = data.frame(id = 1:3, name = c("A", "B", "C"))
df2 = data.frame(id = 4:6, name = c("D", "E", "F"))
combined_df = rbind(df1, df2)

Take two dataframe (d1, d2), use rbind() to stack them together.

2. Using the cbind() function: cbind() is used to add columns to a data frame. We’re including this in our overview since you’re frequently using it at the same time as rbind(), when you’re bolting your data frame together.

df = data.frame(id = 1:3, name = c("A", "B", "C"))
age = c(25, 28, 23)
df_with_age = cbind(df, age)

In this example, we added an ‘age’ column to the existing dataframe df using the cbind() function.

3. Using merge():  This is useful when you have a shared key that you can use to join the two dataframes together at the record level. Here’s an example:

df1 = data.frame(id = 1:3, name = c("A", "B", "C"))
df2 = data.frame(id = 1:3, age = c(25, 28, 23))
merged_df = merge(df1, df2, by = "id")

In the example above, we combined two separate dataframes (df1 and df2) with a common column ‘id’ using the merge() function. The resulting dataframe, merged_df, contains both the ‘name’ and ‘age’ information for each id.

Section 3: Manually Adding Rows to a Dataframe

Using the Rbind Function

The rbind() function in R allows you to add rows from one dataframe to another by creating a new combined dataframe, as long as the number of columns and variable names match. If you’re doing this for a lot of records, keep an eye on speed and memory usage. Here is a sample of the code:

df1 <- data.frame(name = c('John', 'Doe'),age = c(25, 30))

df2 <- data.frame( name = c('Jane', 'Smith'), age = c(32, 29))

combined_df <- rbind(df1, df2)

Using the merge function

Another way to add rows to a dataframe is by using the merge() function, which joins two dataframes based on one common column. For instance, see this example:

df1 <- data.frame(
  id = c(1, 2),
  name = c("John", "Doe")

df2 <- data.frame(
  id = c(1, 2),
  age = c(25, 30)

combined_df <- merge(df1, df2, by = "id")

By specifying by = "id", the merge() function combines the dataframes based on their common id column, resulting in a new dataframe that includes both the name and age columns.

Appending Rows from Another Dataframe

Appending rows from one dataframe to another can be achieved through different methods in R. In this section, we will explore two common approaches using popular packages – dplyr and data.table.

Utilizing the Dplyr Package

The dplyr package is a popular choice for data manipulation as it provides concise and easy-to-read functions. To append rows from another dataframe, you can use the rbind() function. Here’s an example:

df1 <- data.frame(a = 1:3, b = 4:6)
df2 <- data.frame(a = 4:6, b = 7:9)
combined_df <- rbind(df1, df2)

If you need to add a new column to a dataframe, you can use the cbind() function:

new_column <- data.frame(c = 10:15)
extended_df <- cbind(combined_df, new_column)

To combine dataframes based on a common column, use the merge() function:

df3 <- data.frame(a = 1:6, c = 11:16)
merged_df <- merge(combined_df, df3, by = "a")

Using the Data.Table Package

The data.table package is an indispensable resource for data manipulation in R. It simplifies various operations such as appending rows from another dataframe, while providing more efficient performance overall.

To append rows from another dataframe using the data.table package, you can use the rbindlist() function – which is more efficient and faster than its equivalent function, rbind(). Here’s an example:

dt1 <-
dt2 <-
combined_dt <- rbindlist(list(dt1, dt2))

Similar to dplyr, you can add new columns using the cbind() function, and merge dataframes based on a common column with the merge() function:

new_column <- data.table(c = 10:15)
extended_dt <- cbind(combined_dt, new_column)
merged_dt <- merge(combined_dt,, by = "a")

Both the dplyr and data.table packages provide useful functionality for appending rows and manipulating dataframes. Choose the package that best aligns with your preferences and performance requirements.

Section 5: Adding Rows Conditionally

In this section, we discuss how to add rows to an R dataframe conditionally using several methods. Adding rows under specific conditions can help improve data analysis and make it more efficient.

Implementing the Ifelse Function

The ifelse() function can be used to create a new vector with different values based on a specified condition. This new vector can then be added to the dataframe using the cbind() function. Here’s an example:


# Create sample dataframe
df <- data.frame(Name = c("Alice", "Bob", "Cathy","Debbie"), Age = c(35, 45, 30,15))

# Create a new column based on Age condition
df$Adult <- ifelse(df$Age >= 18, "Yes", "No")

# Add the new column to the dataframe
df <- cbind(df, df$Adult)

In this example, we used the ifelse() function to categorize individuals as adults or not, and then added the new column to the dataframe. These could also be used to filter rows (now or at a later time)…

Other methods for adding rows conditionally include using the rbind() and merge() functions:

  • rbind(): This function can be used to combine two dataframes with similar structures. First, filter the dataframes based on desired conditions, and then use rbind() to merge them. Here’s an example:
# Filter dataframes based on conditions
df1_filtered <- df %>% filter(Age >= 18)
df2_filtered <- df %>% filter(Age < 18)

# Combine the filtered dataframes
combined_df <- rbind(df1_filtered, df2_filtered)
  • merge(): This function combines two dataframes based on a common column. You can specify the conditions for the merge using the ‘by’ parameter. Here’s an example:
# Create two dataframes with a common column
df1 <- data.frame(ID = c(1,2,3), Name = c("Alice", "Bob", "Cathy"))
df2 <- data.frame(ID = c(1,2,3), Age = c(35, 45, 30))

# Merge dataframes based on the common column 'ID'
combined_df <- merge(df1, df2, by = "ID")

These methods provide various ways to add rows to an R dataframe conditionally, enhancing your data processing capabilities.

Error Handling and Troubleshooting

When adding rows to an R dataframe, certain errors or obstacles may occur. Three main methods can help overcome these issues: using the rbind() function, the cbind() function or the merge() function.

The rbind() function combines two dataframes by updating their rows. If any errors occur, make sure both dataframes have the same columns and data types. Here is an example:

df1 <- data.frame(Name = c('Alice', 'Bob'), Age = c(30, 25))
df2 <- data.frame(Name = c('Eve', 'David'), Age = c(35, 40))
combined_df <- rbind(df1, df2)

Next, using the cbind() function, you can add a new column to a dataframe. Ensure that the length of the new column matches the number of rows in the dataframe. Here is a code example:

df <- data.frame(Name = c('John', 'Mary'), Age = c(33, 28))
new_col <- c('M', 'F')
updated_df <- cbind(df, Gender = new_col)

Finally, the merge() function can combine two dataframes based on a shared column. If duplicates emerge or a merge is unsuccessful, verify that the common column has the same name and compatible data types in both dataframes. Below is an example:

df1 <- data.frame(Id = c(1, 2), Name = c('Tom', 'Sara'))
df2 <- data.frame(Id = c(1, 2), Age = c(29, 26))
merged_df <- merge(df1, df2, by = 'Id')

By carefully examining these common error handling and troubleshooting techniques, it becomes simpler to add rows to an R dataframe and achieve the desired output.


In this article, we have discussed several methods for adding rows to a data.frame in R. Each method has its own use case, and combining them can provide a powerful tool for manipulating your data.

Below is a summary of the methods covered:

  • Using the rbind() function to combine two dataframes:
  • Using the cbind() function to add a new column to a dataframe:
  • Using the merge() function to combine two dataframes based on a common column:

Understanding these functions will enable you to efficiently add rows to data.frames in a variety of situations. Practice these techniques with your own data sets to become more proficient in R data manipulation.

Scroll to top