Bird
Raised Fist0
R Programmingprogramming~20 mins

separate and unite in R Programming - Practice Problems & Coding Challenges

Choose your learning style10 modes available
Challenge - 5 Problems
🎖️
Separate and Unite Master
Get all challenges correct to earn this badge!
Test your skills under time pressure!
❓ Predict Output
intermediate
2:00remaining
Output of separate() with multiple separators
What is the output of this R code using separate() from tidyr?
R Programming
library(tidyr)
library(dplyr)
df <- tibble(id = 1:2, info = c("a-1_x", "b-2_y"))
df %>% separate(info, into = c("letter", "number", "extra"), sep = "[-_]")
AA tibble with columns: id, letter (a-1, b-2), number (x,y), extra (NA, NA)
BError: unused argument sep
CA tibble with columns: id, letter (a, b), number (1_x, 2_y), extra (NA, NA)
DA tibble with columns: id, letter (a,b), number (1,2), extra (x,y)
Attempts:
2 left
💡 Hint
The separator can be a regular expression matching multiple characters.
❓ Predict Output
intermediate
2:00remaining
Output of unite() with remove = FALSE
What is the output of this R code using unite() from tidyr?
R Programming
library(tidyr)
df <- tibble(x = c("a", "b"), y = c(1, 2))
df %>% unite("xy", x, y, sep = ":", remove = FALSE)
AA tibble with columns: x, y, xy (a:1, b:2)
BA tibble with columns: x, y, xy (a1, b2)
CA tibble with columns: xy (a:1, b:2) only
DError: unused argument remove
Attempts:
2 left
💡 Hint
The argument remove = FALSE keeps the original columns.
🔧 Debug
advanced
2:00remaining
Why does this separate() call fail?
Consider this code snippet:
library(tidyr)
df <- tibble(code = c("A-1", "B-2"))
df %>% separate(code, into = c("letter", "number"), sep = "-")
Why might this code fail if the input data changes to include "C1" (without a dash)?
R Programming
library(tidyr)
df <- tibble(code = c("A-1", "B-2", "C1"))
df %>% separate(code, into = c("letter", "number"), sep = "-")
AIt raises an error because 'C1' does not contain the separator '-' and cannot be split into two parts.
BIt works fine and splits 'C1' into 'C' and '1' automatically.
CIt returns NA for both letter and number for 'C1' without error.
DIt splits 'C1' into 'C1' and NA without error.
Attempts:
2 left
💡 Hint
The separate() function expects the separator to be present to split into all requested columns.
❓ Predict Output
advanced
2:00remaining
Result of separate() with extra = 'merge'
What is the output of this R code?
R Programming
library(tidyr)
df <- tibble(id = 1, val = "a-b-c")
df %>% separate(val, into = c("one", "two"), sep = "-", extra = "merge")
AA tibble with one row: one = 'a', two = 'b'
BA tibble with one row: one = 'a', two = 'b-c'
CA tibble with one row: one = 'a-b', two = 'c'
DError: unused argument extra
Attempts:
2 left
💡 Hint
The extra = 'merge' option merges leftover pieces into the last column.
🧠 Conceptual
expert
3:00remaining
Understanding unite() with NA values
Given this R code, what is the value of the 'combined' column after running unite()?
R Programming
library(tidyr)
df <- tibble(a = c("x", NA), b = c("y", "z"))
df %>% unite("combined", a, b, sep = "-")
Acombined = c("x-y", "-z")
Bcombined = c("x-y", NA)
Ccombined = c("x-y", "NA-z")
Dcombined = c("x-y", "z")
Attempts:
2 left
💡 Hint
unite() uses paste(collapse = sep) internally, which converts NA to the string "NA".

Practice

(1/5)
1. What does the separate function do in R's tidyr package?
easy
A. It removes missing values from a dataset.
B. It combines multiple columns into one column.
C. It splits one column into multiple columns based on a separator.
D. It sorts the rows of a data frame.

Solution

  1. Step 1: Understand the purpose of separate

    The separate function is designed to split a single column into multiple columns by using a separator like a comma or space.
  2. Step 2: Compare with other options

    unite does the opposite by joining columns, and other options do unrelated tasks.
  3. Final Answer:

    It splits one column into multiple columns based on a separator. -> Option C
  4. Quick Check:

    separate splits columns [OK]
Hint: Remember: separate = split one column into many [OK]
Common Mistakes:
  • Confusing separate with unite
  • Thinking separate removes rows
  • Assuming separate combines columns
2. Which of the following is the correct syntax to unite columns first and last into a new column full_name using tidyr?
easy
A. unite(data, full_name, first & last, sep = " ")
B. unite(data, first, last, full_name, sep = " ")
C. unite(data, full_name, first + last, sep = " ")
D. unite(data, full_name, first, last, sep = " ")

Solution

  1. Step 1: Recall unite function syntax

    The correct syntax is unite(data, new_column, col1, col2, sep = "separator").
  2. Step 2: Match options with syntax

    unite(data, full_name, first, last, sep = " ") matches the syntax exactly, specifying the data, new column name, columns to unite, and separator.
  3. Final Answer:

    unite(data, full_name, first, last, sep = " ") -> Option D
  4. Quick Check:

    unite syntax = unite(data, new_col, cols...) [OK]
Hint: unite(data, new_col, col1, col2, sep) is correct [OK]
Common Mistakes:
  • Mixing order of arguments
  • Using + instead of commas
  • Passing columns as a vector incorrectly
3. Given the data frame df with a column date containing values like "2024-06-15", what will be the result of separate(df, date, into = c("year", "month", "day"), sep = "-")?
medium
A. A data frame with columns year, month, day split from the date string.
B. An error because sep must be a space.
C. The original data frame unchanged.
D. A single column with dates joined by dashes.

Solution

  1. Step 1: Understand separate with sep = "-"

    The function splits the date column at each dash, creating three new columns named year, month, and day.
  2. Step 2: Confirm output structure

    The output will be a data frame with these three new columns containing parts of the original date string.
  3. Final Answer:

    A data frame with columns year, month, day split from the date string. -> Option A
  4. Quick Check:

    separate splits by given separator [OK]
Hint: sep argument splits string at given character [OK]
Common Mistakes:
  • Assuming sep must be space
  • Expecting a single combined column
  • Not naming the new columns correctly
4. What is wrong with this code snippet?
unite(full_name, first, last)
It produces an error.
medium
A. The data frame df is not specified.
B. Missing the separator argument sep.
C. The columns first and last must be in a vector.
D. The new column name full_name must be quoted.

Solution

  1. Step 1: Check unite function syntax

    The unite function requires the data frame as the first argument.
  2. Step 2: Identify the issue

    In the code, full_name is the first argument, which is the new column name, not a data frame. The data frame (e.g., df) is missing.
  3. Final Answer:

    The data frame df is not specified. -> Option A
  4. Quick Check:

    unite(dataframe, new_col, cols...) [OK]
Hint: Data frame must be first argument in unite [OK]
Common Mistakes:
  • Forgetting to pass data frame first
  • Not quoting new column name
  • Passing columns as vector incorrectly
5. You have a data frame df with columns location containing "city,state" strings. How do you split location into two columns city and state, then combine them back into location separated by a comma and space?
hard
A. Use unite(df, location, city, state, sep = ",") then separate(df, location, into = c("city", "state"), sep = ", ").
B. Use separate(df, location, into = c("city", "state"), sep = ",") then unite(df, location, city, state, sep = ", ").
C. Use separate(df, location, into = c("city", "state"), sep = ", ") then unite(df, location, city, state, sep = ",").
D. Use separate(df, location, into = c("city", "state"), sep = ",") then unite(df, location, city, state, sep = ",").

Solution

  1. Step 1: Separate location by comma

    Use separate with sep = "," to split "city,state" into two columns.
  2. Step 2: Unite city and state with comma and space

    Use unite with sep = ", " to join city and state back with a comma and space.
  3. Final Answer:

    Use separate with sep="," then unite with sep=", " -> Option B
  4. Quick Check:

    Separate splits, unite joins with correct separators [OK]
Hint: Match separators exactly when separating and uniting [OK]
Common Mistakes:
  • Mixing separator strings between separate and unite
  • Using wrong order of functions
  • Not matching spaces in separators
Recommended

Ready to prove it?

Pass the test and this pattern moves unknown strong while earning +1 Grip toward your certificate.

10 questions~5 mineasy hard