Bird
Raised Fist0
R Programmingprogramming~5 mins

Adding and removing columns in R Programming

Choose your learning style10 modes available
Introduction

We add or remove columns in a table to change what information it holds. This helps us organize or update data easily.

You want to add a new detail to a list of people, like their age.
You need to remove a column that is no longer useful or has wrong data.
You want to prepare data by selecting only the columns needed for analysis.
You want to combine data by adding columns from another table.
Syntax
R Programming
dataframe$new_column <- values  # Add a new column

dataframe$column_to_remove <- NULL  # Remove a column

Use the $ sign to add or remove columns by name.

Assigning NULL to a column removes it from the dataframe.

Examples
This adds a new column 'city' with values "NY" and "LA" to the dataframe.
R Programming
df <- data.frame(name = c("Anna", "Bob"), age = c(25, 30))
df$city <- c("NY", "LA")
This removes the 'age' column from the dataframe.
R Programming
df$age <- NULL
Adds a new column 'country' with the same value "USA" for all rows.
R Programming
df["country"] <- "USA"
Sample Program

This program creates a table with names and scores. Then it adds a grade column and removes the score column. Finally, it prints the updated table.

R Programming
df <- data.frame(name = c("Alice", "John"), score = c(90, 85))

# Add a new column 'grade'
df$grade <- c("A", "B")

# Remove the 'score' column
df$score <- NULL

print(df)
OutputSuccess
Important Notes

When adding a column, make sure the number of values matches the number of rows.

Removing a column by assigning NULL deletes it permanently from the dataframe.

Summary

Use $ to add or remove columns in a dataframe.

Assign values to add a column; assign NULL to remove one.

Adding/removing columns helps keep your data organized and relevant.

Practice

(1/5)
1. In R, how do you add a new column named age with values c(25, 30, 35) to an existing dataframe df?
easy
A. df <- c(df, age = c(25, 30, 35))
B. df[age] = c(25, 30, 35)
C. df$age <- c(25, 30, 35)
D. df$age = NULL

Solution

  1. Step 1: Understand how to add columns in R

    In R, you add a new column to a dataframe by assigning a vector to df$column_name.
  2. Step 2: Apply the assignment for the new column

    Assigning c(25, 30, 35) to df$age adds the new column age with those values.
  3. Final Answer:

    df$age <- c(25, 30, 35) -> Option C
  4. Quick Check:

    Use $ and assign vector to add column [OK]
Hint: Use df$column <- values to add columns fast [OK]
Common Mistakes:
  • Using NULL to add a column instead of removing
  • Trying to add column with c() outside assignment
  • Using incorrect dataframe syntax like c(df, ...)
2. Which of the following is the correct syntax to remove the column height from dataframe df in R?
easy
A. df$height <- NULL
B. df$height = c()
C. df$height <- NA
D. remove(df$height)

Solution

  1. Step 1: Recall how to remove columns in R

    Assigning NULL to a dataframe column removes it completely.
  2. Step 2: Apply removal syntax

    Setting df$height <- NULL deletes the height column from df.
  3. Final Answer:

    df$height <- NULL -> Option A
  4. Quick Check:

    Assign NULL to remove column [OK]
Hint: Remove columns by assigning NULL: df$col <- NULL [OK]
Common Mistakes:
  • Assigning empty vector c() instead of NULL
  • Assigning NA which keeps column but fills with missing
  • Using remove() which is not for dataframe columns
3. What will be the output of the following R code?
df <- data.frame(name = c("Ann", "Bob"), score = c(90, 85))
df$passed <- c(TRUE, FALSE)
df$score <- NULL
df
medium
A. A dataframe with columns: name, passed
B. A dataframe with columns: name, score, passed
C. A dataframe with columns: name, score
D. Error because score column cannot be removed

Solution

  1. Step 1: Add new column 'passed'

    The code adds a logical column passed with values TRUE and FALSE.
  2. Step 2: Remove the 'score' column

    Assigning NULL to df$score deletes the score column.
  3. Final Answer:

    A dataframe with columns: name, passed -> Option A
  4. Quick Check:

    Added passed, removed score, left name [OK]
Hint: NULL removes columns; new assignment adds columns [OK]
Common Mistakes:
  • Thinking score column remains after NULL assignment
  • Expecting error on removing existing column
  • Confusing TRUE/FALSE vector with numeric
4. Consider this R code snippet:
df <- data.frame(x = 1:3, y = 4:6)
df$z = c(7, 8)
df$y <- NULL
df

What is the problem and how to fix it?
medium
A. Error because data.frame cannot have NULL columns; fix by using list
B. No error; code runs fine and removes y column
C. Error because NULL cannot remove columns; fix by using NA
D. Warning because length of z vector does not match rows; fix by matching length

Solution

  1. Step 1: Check length of new column vector

    The dataframe has 3 rows, but c(7, 8) has length 2, causing a length mismatch warning.
  2. Step 2: Fix by providing vector of correct length

    Use c(7, 8, 9) or recycle values properly to match 3 rows.
  3. Final Answer:

    Warning due to length mismatch; fix by matching vector length -> Option D
  4. Quick Check:

    New column vector length must match dataframe rows [OK]
Hint: New column vector length must equal dataframe rows [OK]
Common Mistakes:
  • Ignoring vector length mismatch causing warning
  • Thinking NULL cannot remove columns
  • Trying to assign NA to remove columns
5. You have a dataframe df with columns id, score1, and score2. You want to create a new column average that is the mean of score1 and score2, then remove score1 and score2. Which code correctly does this?
hard
A. df$average <- mean(df$score1, df$score2) df$score1 <- NULL df$score2 <- NULL
B. df$average <- rowMeans(df[c("score1", "score2")]) df$score1 <- NULL df$score2 <- NULL
C. df$average <- mean((df$score1 + df$score2) / 2) df$score1 <- NULL df$score2 <- NULL
D. df$average <- (score1 + score2) / 2 df$score1 <- NULL df$score2 <- NULL

Solution

  1. Step 1: Calculate average of two columns row-wise

    Use rowMeans() on the subset df[c("score1", "score2")] to get the mean for each row.
  2. Step 2: Remove the original score columns

    Assign NULL to df$score1 and df$score2 to delete them.
  3. Final Answer:

    df$average <- rowMeans(df[c("score1", "score2")]) df$score1 <- NULL df$score2 <- NULL -> Option B
  4. Quick Check:

    Use rowMeans() for row-wise average, then remove columns [OK]
Hint: Use rowMeans() for row averages, then assign NULL to remove [OK]
Common Mistakes:
  • Using mean() which computes overall mean, not row-wise
  • Referencing columns without df$ prefix
  • Trying to remove columns by assigning NA
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