Bird
Raised Fist0
R Programmingprogramming~10 mins

Merging data frames in R Programming - Interactive Code Practice

Choose your learning style10 modes available
Practice - 5 Tasks
Answer the questions below
1fill in blank
easy

Complete the code to merge two data frames by the column 'id'.

R Programming
merged_df <- merge(df1, df2, by = [1])
Drag options to blanks, or click blank then click option'
A"score"
B"name"
C"age"
D"id"
Attempts:
3 left
💡 Hint
Common Mistakes
Forgetting to put the column name in quotes.
Using a column name that does not exist in both data frames.
2fill in blank
medium

Complete the code to perform a left join of df1 with df2 by 'id'.

R Programming
merged_df <- merge(df1, df2, by = "id", all.x = [1])
Drag options to blanks, or click blank then click option'
ATRUE
BNA
CFALSE
DNULL
Attempts:
3 left
💡 Hint
Common Mistakes
Using FALSE instead of TRUE for all.x.
Confusing all.x with all.y.
3fill in blank
hard

Fix the error in the code to merge df1 and df2 by columns 'id' and 'date'.

R Programming
merged_df <- merge(df1, df2, by = [1])
Drag options to blanks, or click blank then click option'
Ac(id, date)
B"id, date"
Cc("id", "date")
Dlist("id", "date")
Attempts:
3 left
💡 Hint
Common Mistakes
Passing a single string with comma-separated names.
Using unquoted column names.
4fill in blank
hard

Fill both blanks to merge df1 and df2 by 'id' and keep all rows from both data frames.

R Programming
merged_df <- merge(df1, df2, by = [1], all.x = [2], all.y = TRUE)
Drag options to blanks, or click blank then click option'
A"id"
BTRUE
CFALSE
D"date"
Attempts:
3 left
💡 Hint
Common Mistakes
Using the wrong column name for merging.
Setting all.x to FALSE which drops rows from df1.
5fill in blank
hard

Fill all three blanks to merge df1 and df2 by 'id', keep all rows from df1, and suffix overlapping columns with '_df1' and '_df2'.

R Programming
merged_df <- merge(df1, df2, by = [1], all.x = [2], suffixes = c([3], "_df2"))
Drag options to blanks, or click blank then click option'
A"id"
BTRUE
C"_df1"
DFALSE
Attempts:
3 left
💡 Hint
Common Mistakes
Not using quotes around suffix strings.
Setting all.x to FALSE which drops rows from df1.
Using wrong column name for merging.

Practice

(1/5)
1. What does the merge() function do in R when working with data frames?
easy
A. It combines two data frames by matching rows based on common columns.
B. It deletes rows from a data frame.
C. It sorts a data frame alphabetically.
D. It converts a data frame into a list.

Solution

  1. Step 1: Understand the purpose of merge()

    The merge() function is designed to combine two data frames by matching rows based on one or more common columns.
  2. Step 2: Eliminate incorrect options

    Options A, B, and D describe different operations unrelated to merging data frames.
  3. Final Answer:

    It combines two data frames by matching rows based on common columns. -> Option A
  4. Quick Check:

    merge() combines data frames by matching columns [OK]
Hint: Remember: merge() joins data frames on matching columns [OK]
Common Mistakes:
  • Thinking merge() deletes rows
  • Confusing merge() with sorting functions
  • Assuming merge() converts data frames to lists
2. Which of the following is the correct syntax to merge two data frames df1 and df2 by a common column id in R?
easy
A. merge(df1, df2, on = "id")
B. merge(df1, df2, by = "id")
C. merge(df1, df2, key = "id")
D. merge(df1, df2, match = "id")

Solution

  1. Step 1: Recall merge() argument names

    The correct argument to specify the column to merge on is by, not on, key, or match.
  2. Step 2: Check syntax correctness

    merge(df1, df2, by = "id") uses by = "id", which is the correct syntax for merging by the column named "id".
  3. Final Answer:

    merge(df1, df2, by = "id") -> Option B
  4. Quick Check:

    Use by= to specify merge column [OK]
Hint: Use by= to specify columns in merge() [OK]
Common Mistakes:
  • Using on= instead of by=
  • Using key= or match= which are invalid
  • Forgetting to quote the column name
3. Given the following R code:
df1 <- data.frame(id = c(1, 2, 3), val1 = c("A", "B", "C"))
df2 <- data.frame(id = c(2, 3, 4), val2 = c("X", "Y", "Z"))
result <- merge(df1, df2, by = "id", all = FALSE)
print(result)

What will be the output?
medium
A. id val1 val2 1 2 B X 2 3 C Y
B. id val1 val2 1 1 A <NA> 2 2 B X 3 3 C Y 4 4 <NA> Z
C. id val1 val2 1 1 A X 2 2 B Y 3 3 C Z
D. Error: all is not a valid argument

Solution

  1. Step 1: Understand merge with all = FALSE

    Setting all = FALSE performs an inner join, keeping only rows with matching id in both data frames.
  2. Step 2: Identify matching ids and resulting rows

    Matching ids are 2 and 3. So rows with id 1 and 4 are excluded. The merged data frame has rows for id 2 and 3 with corresponding values.
  3. Final Answer:

    id val1 val2 1 2 B X 2 3 C Y -> Option A
  4. Quick Check:

    Inner join keeps only matching ids [OK]
Hint: all=FALSE means keep only matching rows [OK]
Common Mistakes:
  • Expecting all rows to appear (confusing inner and outer join)
  • Misreading which ids match
  • Thinking all=FALSE causes error
4. Consider this R code snippet:
df1 <- data.frame(id = c(1, 2), val1 = c("A", "B"))
df2 <- data.frame(id = c(2, 3), val2 = c("X", "Y"))
result <- merge(df1, df2, by = "id", all.x = TRUE, all.y = TRUE)
print(result)

What is the error in this code?
medium
A. Using both all.x and all.y together is invalid syntax.
B. The merge function requires a parameter named all, not all.x or all.y.
C. The data frames have different column names, causing a merge error.
D. There is no error; the code performs a full outer join correctly.

Solution

  1. Step 1: Understand all.x and all.y parameters

    In R, all.x = TRUE keeps all rows from the first data frame, all.y = TRUE keeps all rows from the second. Using both performs a full outer join.
  2. Step 2: Check for syntax or logical errors

    The syntax is correct and the data frames can be merged on id even if some ids don't match. No error occurs.
  3. Final Answer:

    There is no error; the code performs a full outer join correctly. -> Option D
  4. Quick Check:

    all.x and all.y together = full outer join [OK]
Hint: all.x=TRUE and all.y=TRUE means full outer join [OK]
Common Mistakes:
  • Thinking all.x and all.y cannot be used together
  • Confusing all with all.x or all.y
  • Assuming different column names cause error
5. You have two data frames:
df1 <- data.frame(id = c(1, 2, 2, 3), val1 = c("A", "B", "C", "D"))
df2 <- data.frame(id = c(2, 2, 4), val2 = c("X", "Y", "Z"))

You want to merge them to keep all rows from df1 and add matching val2 values. Which code correctly merges and keeps all df1 rows, including duplicates, showing NA where no match exists?
hard
A. merge(df1, df2, by = "id", all = TRUE)
B. merge(df1, df2, by = "id", all.y = TRUE)
C. merge(df1, df2, by = "id", all.x = TRUE)
D. merge(df1, df2, by = "id")

Solution

  1. Step 1: Understand all.x = TRUE behavior

    Setting all.x = TRUE keeps all rows from df1, including duplicates, and adds matching rows from df2. Non-matching rows get NA.
  2. Step 2: Compare with other options

    merge(df1, df2, by = "id", all = TRUE) keeps all rows from both data frames (full outer join), which is not required. merge(df1, df2, by = "id", all.y = TRUE) keeps all rows from df2 only. merge(df1, df2, by = "id") keeps only matching rows (inner join).
  3. Final Answer:

    merge(df1, df2, by = "id", all.x = TRUE) -> Option C
  4. Quick Check:

    all.x=TRUE keeps all df1 rows with matches or NA [OK]
Hint: Use all.x=TRUE to keep all rows from first data frame [OK]
Common Mistakes:
  • Using all=TRUE instead of all.x=TRUE
  • Using all.y=TRUE which keeps second data frame rows
  • Forgetting duplicates are kept automatically
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