Manipulating and Transforming Data Frames in R

Data frames are an essential data structure in R, allowing us to store and analyze data in a structured manner. In this article, we will delve into the various techniques and functions available in R to manipulate and transform data frames.

Creating a Data Frame

Before we dive into manipulating and transforming data frames, let's quickly review how to create one. A data frame can be created using the data.frame() function. For example, consider the following code snippet that creates a data frame named my_df:

my_df <- data.frame(
  name = c("John", "Jane", "Alice"),
  age = c(25, 30, 28),
  city = c("New York", "London", "Paris")

Selecting Columns

To select specific columns from a data frame, we can use the $ operator or the [ ] indexing. For instance, to select the name column from the my_df data frame, we can write:


Alternatively, we can use the indexing operator:


To select multiple columns, we can specify their names within a vector:

my_df[, c("name", "age")]

Selecting Rows

We can select specific rows from a data frame using the [ ] indexing. For example, to select the first two rows of my_df, we can write:

my_df[1:2, ]

If we want to select rows based on certain conditions, we can use logical operators and comparisons. For instance, to select rows where the age is greater than 25, we can use:

my_df[my_df$age > 25, ]

Adding and Removing Columns

To add a new column to a data frame, we can simply assign values to a new column name. Let's suppose we want to add a column named gender to my_df:

my_df$gender <- c("Male", "Female", "Female")

To remove a column, we can use the NULL assignment. For example, to remove the city column from my_df, we can write:

my_df$city <- NULL

Filtering Rows

Filtering rows based on specific conditions is a crucial task in data manipulation. The dplyr package provides powerful tools to accomplish this. Let's assume the dplyr package is already installed and loaded:


To filter rows based on a condition, we can use the filter() function. For example, to filter rows where the age is greater than 25, we can write:

filtered_df <- filter(my_df, age > 25)

Modifying Values

To modify values in a data frame, we can use indexing and assignment. For instance, let's suppose we want to change the age of the second row in my_df to 35:

my_df[2, "age"] <- 35

We can also apply functions to multiple values in a column using the mutate() function from the dplyr package. For example, to increase all ages by 5:

mutated_df <- mutate(my_df, age = age + 5)

Sorting Data Frame

Sorting a data frame based on one or more columns can be accomplished using the arrange() function from the dplyr package. For example, to sort my_df based on the age column in descending order, we can write:

sorted_df <- arrange(my_df, desc(age))


In this article, we explored the various techniques and functions available in R for manipulating and transforming data frames. We covered selecting columns and rows, adding and removing columns, filtering rows based on conditions, modifying values, and sorting the data frame. Armed with these techniques, you can efficiently work with data frames in R and perform complex data manipulations with ease.

noob to master © copyleft