Bird
Raised Fist0
R Programmingprogramming~10 mins

Factor levels in R Programming - Step-by-Step Execution

Choose your learning style10 modes available
Concept Flow - Factor levels
Create vector with values
↓
Convert vector to factor
↓
Assign levels automatically
↓
Use levels for ordering or grouping
↓
Access or modify levels if needed
↓
Use factor in analysis or plots
Start with a vector, convert it to a factor which assigns levels automatically, then use or modify these levels for grouping or ordering.
Execution Sample
R Programming
x <- c("apple", "banana", "apple", "cherry")
f <- factor(x)
levels(f)
print(f)
Create a character vector, convert it to a factor, check its levels, and print the factor showing values as levels.
Execution Table
StepActionVariableValue/ResultNotes
1Create vector xx["apple", "banana", "apple", "cherry"]Vector with repeated fruits
2Convert x to factor ffFactor with levels: apple, banana, cherryLevels assigned alphabetically by default
3Check levels of flevels(f)["apple", "banana", "cherry"]Shows unique sorted levels
4Print factor ff[1, 2, 1, 3]Values shown as factor level codes
5EndExecution complete
💡 All steps executed; factor created with levels assigned automatically.
Variable Tracker
VariableStartAfter Step 1After Step 2Final
xundefined["apple", "banana", "apple", "cherry"]["apple", "banana", "apple", "cherry"]["apple", "banana", "apple", "cherry"]
fundefinedundefinedFactor with levels: apple, banana, cherryFactor with levels: apple, banana, cherry
Key Moments - 2 Insights
Why does the factor have levels sorted alphabetically, not in the order of appearance?
By default, R assigns factor levels in alphabetical order as shown in step 2 and 3 of the execution_table.
What does printing a factor show compared to printing a character vector?
Printing a factor shows the underlying integer codes representing the factor levels, not just raw strings, as seen in step 4 of the execution_table.
Visual Quiz - 3 Questions
Test your understanding
Look at the execution_table, what are the levels of factor f after step 2?
A["apple", "cherry", "banana"]
B["banana", "apple", "cherry"]
C["apple", "banana", "cherry"]
D["cherry", "banana", "apple"]
💡 Hint
Check the 'Value/Result' column in row for step 2 in execution_table.
At which step is the factor f created from vector x?
AStep 1
BStep 2
CStep 3
DStep 4
💡 Hint
Look at the 'Action' column to find when conversion to factor happens.
If the vector x had values c("banana", "apple", "banana"), how would the levels be ordered by default?
A["apple", "banana"]
B["banana", "apple"]
C["banana"]
D["apple"]
💡 Hint
Remember factor levels are sorted alphabetically by default as shown in execution_table step 2.
Concept Snapshot
Factor levels in R:
- Create a vector of values
- Convert to factor with factor()
- Levels assigned alphabetically by default
- Use levels() to see or modify levels
- Factors help group and order categorical data
Full Transcript
This example shows how to create a factor in R from a character vector. First, a vector x with fruit names is created. Then, x is converted to a factor f. R automatically assigns levels to f in alphabetical order: apple, banana, cherry. Using levels(f) shows these levels. Printing f displays the underlying integer codes representing the factor levels. Factors are useful for grouping and ordering categories in data analysis.

Practice

(1/5)
1. What does the levels() function do when applied to a factor in R?
easy
A. It changes the factor to a character vector.
B. It converts the factor to numeric values.
C. It shows the categories (levels) of the factor variable.
D. It removes unused levels from the factor.

Solution

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

    The levels() function in R returns the categories or labels assigned to a factor variable.
  2. Step 2: Differentiate from other functions

    Functions like as.numeric() convert factors to numbers, and droplevels() removes unused levels, but levels() only shows the current levels.
  3. Final Answer:

    It shows the categories (levels) of the factor variable. -> Option C
  4. Quick Check:

    levels() = shows categories [OK]
Hint: Remember: levels() lists categories, not changes data type [OK]
Common Mistakes:
  • Confusing levels() with as.numeric()
  • Thinking levels() removes unused categories
  • Assuming levels() converts factor to character
2. Which of the following is the correct way to create a factor with levels ordered as "Low", "Medium", "High" in R?
easy
A. factor(c("Low", "High", "Medium"), levels = c("Low", "Medium", "High"))
B. factor(c("Low", "High", "Medium"), levels = c("High", "Medium", "Low"))
C. factor(c("Low", "High", "Medium"))
D. factor(c("Low", "High", "Medium"), ordered = FALSE)

Solution

  1. Step 1: Understand factor creation with levels

    To set a specific order of categories, use the levels argument with the desired order.
  2. Step 2: Check the options

    factor(c("Low", "High", "Medium"), levels = c("Low", "Medium", "High")) sets levels as "Low", "Medium", "High" which matches the required order. factor(c("Low", "High", "Medium"), levels = c("High", "Medium", "Low")) reverses the order, C uses default alphabetical order, and D does not specify levels.
  3. Final Answer:

    factor(c("Low", "High", "Medium"), levels = c("Low", "Medium", "High")) -> Option A
  4. Quick Check:

    levels argument sets order [OK]
Hint: Use levels= to set order, not just values [OK]
Common Mistakes:
  • Not specifying levels leads to alphabetical order
  • Setting levels in wrong order
  • Ignoring levels argument
3. What will be the output of the following R code?
f <- factor(c("apple", "banana", "apple", "cherry"), levels = c("banana", "apple", "cherry"))
levels(f)
medium
A. [1] "apple" "banana" "cherry"
B. [1] "banana" "apple" "cherry"
C. [1] "apple" "cherry" "banana"
D. [1] "banana" "cherry" "apple"

Solution

  1. Step 1: Check the levels argument in factor()

    The factor is created with levels explicitly set as c("banana", "apple", "cherry"). This means the order of levels is exactly as given.
  2. Step 2: Output of levels(f)

    Calling levels(f) returns the levels in the order they were set, so it will print "banana", "apple", "cherry".
  3. Final Answer:

    [1] "banana" "apple" "cherry" -> Option B
  4. Quick Check:

    levels() returns set order [OK]
Hint: levels() shows levels in order set, not data order [OK]
Common Mistakes:
  • Assuming levels are sorted alphabetically by default
  • Confusing factor values with levels order
  • Expecting levels() to reorder automatically
4. Identify the error in the following R code snippet:
colors <- factor(c("red", "blue", "green"))
levels(colors) <- c("red", "blue")
levels(colors)
medium
A. The factor must be numeric before changing levels.
B. levels() cannot be assigned directly like this.
C. No error; code runs fine and shows updated levels.
D. Assigning fewer levels than existing causes mismatch error.

Solution

  1. Step 1: Understand levels assignment

    Assigning new levels directly replaces the old levels. The new levels vector must match the length of existing levels.
  2. Step 2: Check the code

    Original factor has 3 levels: "blue", "green", "red" (alphabetical order). The code tries to assign only 2 levels, causing a mismatch error.
  3. Final Answer:

    Assigning fewer levels than existing causes mismatch error. -> Option D
  4. Quick Check:

    levels replacement length must match [OK]
Hint: New levels vector length must equal old levels length [OK]
Common Mistakes:
  • Assigning fewer or more levels than original
  • Thinking levels() assignment always works
  • Ignoring alphabetical default order of levels
5. You have a factor f with levels c("small", "medium", "large"). You want to reorder the levels so that "large" comes first, then "small", then "medium". Which code correctly achieves this without changing the data values?
hard
A. f <- factor(f, levels = c("large", "small", "medium"))
B. levels(f) <- c("large", "small", "medium")
C. f <- factor(f, ordered = TRUE)
D. f <- factor(f, levels = sort(levels(f)))

Solution

  1. Step 1: Understand reordering factor levels

    To reorder levels without changing data, recreate the factor with the new levels order using the levels argument.
  2. Step 2: Analyze options

    f <- factor(f, levels = c("large", "small", "medium")) correctly sets new levels order. levels(f) <- c("large", "small", "medium") tries to assign levels directly, which can cause errors if lengths mismatch. f <- factor(f, ordered = TRUE) only makes factor ordered but does not reorder levels. f <- factor(f, levels = sort(levels(f))) sorts levels alphabetically, not custom order.
  3. Final Answer:

    f <- factor(f, levels = c("large", "small", "medium")) -> Option A
  4. Quick Check:

    Recreate factor with new levels order [OK]
Hint: Use factor() with levels= to reorder levels safely [OK]
Common Mistakes:
  • Assigning levels vector directly causing errors
  • Using ordered=TRUE without changing levels
  • Sorting levels instead of custom order
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