R: How to Use pivot_wider() with Multiple Columns


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

If you’d like to use this function to pivot multiple columns, you can use the following syntax:

library(tidyr)

df_wide <- pivot_wider(df, names_from=group, values_from=c(values1, values2))

By providing multiple column names to the values_from argument, you can pivot multiple columns at once.

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

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

Example: Use pivot_wider() with Multiple Columns in R

Suppose we have the following data frame in R that contains information about various basketball players:

#create data frame
df <- data.frame(team=c('A', 'A', 'A', 'B', 'B', 'B'),
                 player=c('G', 'F', 'C', 'G', 'F', 'C'),
                 points=c(22, 34, 20, 15, 14, 19),
                 assists=c(4, 10, 12, 9, 8, 5))

#view data frame
df

  team player points assists
1    A      G     22       4
2    A      F     34      10
3    A      C     20      12
4    B      G     15       9
5    B      F     14       8
6    B      C     19       5

Now suppose we would like to pivot the values in the points and assists columns at the same time.

We can use the following syntax to do so:

library(tidyr)

#pivot values in points and assists columns
df_wide <- pivot_wider(df, names_from=player, values_from=c(points, assists))

#view wide data frame
df_wide

# A tibble: 2 x 7
  team  points_G points_F points_C assists_G assists_F assists_C
                             
1 A           22       34       20         4        10        12
2 B           15       14       19         9         8         5

Notice that each value in the player column has been combined with points and assists to create a total of six new columns that showed the points and assists scored by players in each position.

The final result is a wide data frame with a total of seven columns.

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

Additional Resources

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

How to Use pivot_longer() 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

Leave a Reply

Your email address will not be published. Required fields are marked *