📖 Scenario: You work in a small company that keeps track of sales data. The data is grouped by salespeople, and each salesperson has a list of sales with amounts and dates.You want to practice how to group this data into nested lists and then flatten it back to a simple table.
🎯 Goal: You will create a nested data frame with sales grouped by salesperson, then unnest it back to a flat data frame showing all sales.
📋 What You'll Learn
Use a data frame with exact columns: salesperson, amount, date
Create a nested data frame grouped by salesperson
Unnest the nested data frame back to a flat data frame
Print the final unnested data frame
💡 Why This Matters
🌍 Real World
Nesting and unnesting data is useful when you want to group related information together and then expand it back for detailed analysis.
💼 Career
Data analysts and scientists often use nesting to organize complex data and unnesting to prepare data for reports or visualizations.
Progress0 / 4 steps
1
Create the initial sales data frame
Create a data frame called sales_data with these exact rows: salesperson = c('Alice', 'Alice', 'Bob', 'Bob', 'Charlie'), amount = c(100, 150, 200, 250, 300), date = as.Date(c('2024-01-01', '2024-01-05', '2024-01-03', '2024-01-07', '2024-01-10')).
R Programming
Hint
Use data.frame() with the exact column names and values.
2
Load the tidyr package
Write a line to load the tidyr package using library(tidyr).
R Programming
Hint
Use library(tidyr) to load the package.
3
Nest the sales data by salesperson
Create a nested data frame called nested_sales by grouping sales_data by salesperson and nesting the other columns using nest().
R Programming
Hint
Use tidyr::nest() with .by = salesperson and nest amount and date.
4
Unnest the nested sales data and print
Unnest the nested_sales data frame back to a flat data frame called unnested_sales using unnest(). Then print unnested_sales.
R Programming
Hint
Use tidyr::unnest() on nested_sales with data, then print the result.
Practice
(1/5)
1. What does nest() do in R when applied to a grouped data frame?
easy
A. It sorts the data frame by a column.
B. It separates a list-column into multiple rows.
C. It removes grouping from the data frame.
D. It groups specified columns into a list-column inside the data frame.
Solution
Step 1: Understand the purpose of nest()
The nest() function groups specified columns into a list-column, keeping other columns as keys.
Step 2: Identify the effect on data frame structure
This creates a nested data frame where each row contains a key and a list of grouped data.
Final Answer:
It groups specified columns into a list-column inside the data frame. -> Option D
Quick Check:
nest() = groups columns into list-column [OK]
Hint: nest() groups columns into list-columns quickly [OK]
Common Mistakes:
Confusing nest() with unnest()
Thinking nest() sorts data
Assuming nest() removes grouping
2. Which of the following is the correct syntax to unnest a list-column named data in a data frame df using tidyr?
easy
A. unnest(df, cols)
B. df %>% unnest()
C. df %>% unnest(cols = data)
D. unnest(df)
Solution
Step 1: Recall unnest() syntax in tidyr
The correct syntax uses unnest() with the argument cols = specifying the list-column to expand.
Step 2: Identify the pipe-friendly syntax
Using the pipe operator, the syntax is df %>% unnest(cols = data), which is the modern recommended style.
Final Answer:
df %>% unnest(cols = data) -> Option C
Quick Check:
unnest() needs cols= and pipe for data frame [OK]
Hint: Use pipe and cols= to unnest list-columns [OK]
A. The list-column data contains data frames, which cannot be unnested.
B. The unnest() function requires the cols argument to specify the list-column.
C. The tibble package is not loaded.
D. The unnest() function cannot unnest list-columns with numeric data.
Solution
Step 1: Check unnest() argument requirements
Modern unnest() requires specifying which columns to unnest using the cols = argument.
Step 2: Identify missing argument causing error
Omitting cols = data causes the function to fail because it doesn't know which list-column to expand.
Final Answer:
The unnest() function requires the cols argument to specify the list-column. -> Option B
Quick Check:
unnest() needs cols= argument [OK]
Hint: Always specify cols= when using unnest() [OK]
Common Mistakes:
Forgetting cols= argument
Assuming unnest() works without specifying columns
Confusing list-column content type
5. You have a data frame df with columns category, subcat, and value. You want to nest subcat and value by category, then filter out groups where the sum of value is less than 10, and finally unnest the filtered data. Which sequence of commands correctly achieves this?