R Academy · Lesson

Tidying Data with tidyr

Transform messy data into a tidy format to facilitate analysis using tidyr functions.

Lesson 3 of 310 steps

Tidying Data with tidyr is a free R Academy lesson on CoddyKit. This is lesson 3 of 3. Any 3 lessons of this learning path are free to read in full — after that, CoddyKit PRO unlocks every lesson, plus hands-on practice with a built-in code editor and a 24/7 AI tutor. It is part of the R Academy learning path, and your progress syncs across the web and the CoddyKit app. The R Academy course includes 3 lessons in total.

Introduction to Tidying Data with tidyr

The tidyr package helps in organizing messy data into a structured format.

Tidying Data with tidyr — illustration 1

Pivoting Data: Wide to Long

Use pivot_longer() to convert wide format data to long format.

library(tidyr)
data <- data.frame(Name = c('Alice', 'Bob'), Jan = c(10, 15), Feb = c(20, 25))
data_long <- pivot_longer(data, cols = c('Jan', 'Feb'), names_to = 'Month', values_to = 'Score')

Pivoting Data: Long to Wide

Use pivot_wider() to convert long format data to wide format.

data_wide <- pivot_wider(data_long, names_from = 'Month', values_from = 'Score')

Separating Columns

The separate() function splits one column into multiple columns.

data <- data.frame(Name = c('Alice_Smith', 'Bob_Jones'))
data_separated <- separate(data, Name, into = c('FirstName', 'LastName'), sep = '_')

Unite Columns

The unite() function combines multiple columns into one.

data_united <- unite(data_separated, FullName, FirstName, LastName, sep = ' ')

Handling Missing Values

Use drop_na() to remove missing values from a dataset.

library(dplyr)
data_clean <- data %>% drop_na()

Replacing Missing Values

Use replace_na() to fill missing values with a specific value.

data_filled <- data %>% mutate(Score = replace_na(Score, 0))

Combining Multiple tidyr Functions

You can use pivot_longer(), separate(), and unite() together for complete data tidying.

data_tidy <- data %>% pivot_longer(cols = c('Jan', 'Feb'), names_to = 'Month', values_to = 'Score') %>% separate(Name, into = c('FirstName', 'LastName'), sep = '_') %>% unite(FullName, FirstName, LastName, sep = ' ')

Summary

In this lesson, you learned:

  • How to reshape data using pivot_longer() and pivot_wider().
  • How to separate and unite columns for structured data.
  • How to handle missing values using drop_na() and replace_na().
Tidying Data with tidyr — illustration 10
Free to start

Learn R with an AI tutor — free

Write and run real code in your browser, get instant help from a 24/7 AI tutor, and pick up where you left off on the web or in the app.

Courses
43
Lessons
159

Frequently Asked Questions

Is the “Tidying Data with tidyr” lesson free?

Yes — any 3 lessons of the R Academy learning path, including “Tidying Data with tidyr”, are free to read in full here on the web. After that, CoddyKit PRO unlocks every lesson, plus interactive practice with a built-in code editor and a 24/7 AI tutor. The R Academy course includes 3 lessons in total.

What will I learn in “Tidying Data with tidyr”?

Transform messy data into a tidy format to facilitate analysis using tidyr functions. You practise R Academy with hands-on code you run directly in the browser, and a 24/7 AI tutor answers your questions as you work through the lesson.

Do I need any experience to start R Academy?

No prior experience is required. R Academy on CoddyKit is structured for beginners through advanced learners, so you can start here or from the beginning and move at your own pace. This is lesson 3 of 3.

How long does the “Tidying Data with tidyr” lesson take?

Most CoddyKit lessons take about 5–10 minutes. Each one is bite-sized and interactive, so you make steady progress and pick up exactly where you left off across the web and the app.

Can I write and run code in this R Academy lesson?

Yes. Every R Academy lesson includes a built-in code editor, so you write and run real code right in your browser and get instant AI feedback — no local setup required.

All lessons in this course

  1. Introduction to Tidyverse
  2. Data Wrangling with dplyr
  3. Tidying Data with tidyr
← Back to R Academy