Tidying Data with tidyr
Transform messy data into a tidy format to facilitate analysis using tidyr functions.
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.

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()andpivot_wider(). - How to separate and unite columns for structured data.
- How to handle missing values using
drop_na()andreplace_na().

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
- Introduction to Tidyverse
- Data Wrangling with dplyr
- Tidying Data with tidyr