Home » How to Use pivot_longer() in R

How to Use pivot_longer() in R

by Erma Khan

The pivot_longer() function from the tidyr package in R can be used to pivot a data frame from a wide format to a long format.

This function uses the following basic syntax:

library(tidyr)

df %>% pivot_longer(cols=c('var1', 'var2', ...),
                    names_to='col1_name',
                    values_to='col2_name') 

where:

  • cols: The names of the columns to pivot
  • names_to: The name for the new character column
  • values_to: The name for the new values column

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

Related: Long vs. Wide Data: What’s the Difference?

Example: Use pivot_longer() in R

Suppose we have the following data frame in R that shows the number of points scored by various basketball players in different years:

#create data frame
df frame(player=c('A', 'B', 'C', 'D'),
                 year1=c(12, 15, 19, 19),
                 year2=c(22, 29, 18, 12))

#view data frame
df

  player year1 year2
1      A    12    22
2      B    15    29
3      C    19    18
4      D    19    12

We can use the pivot_longer() function to pivot this data frame into a long format:

library(tidyr)

#pivot the data frame into a long format
df %>% pivot_longer(cols=c('year1', 'year2'),
                    names_to='year',
                    values_to='points')

# A tibble: 8 x 3
  player year  points
      
1 A      year1     12
2 A      year2     22
3 B      year1     15
4 B      year2     29
5 C      year1     19
6 C      year2     18
7 D      year1     19
8 D      year2     12

Notice that the column names year1 and year2 are now used as values in a new column called “year” and the values from these original columns are placed into one new column called “points.”

The final result is a long data frame.

Note: You can find the complete documentation for the pivot_longer() function here.

Additional Resources

The following tutorials explain how to use other common functions in the tidyr package in R:

How to Use pivot_wider() in R
How to Use Spread Function in R
How to Use Gather Function in R
How to Use Separate Function in R
How to Use the Unite Function in R

Related Posts