Removing Levels from a Factor in R Programming – droplevels() Function

• Last Updated : 05 Jun, 2020

droplevels() function in R programming used to remove unused levels from a Factor.

Syntax:
# For vector object
droplevels(x, exclude = if(anyNA(levels(x))) NULL else NA, …)

# For data frame object
droplevels(x, except, exclude)

Parameter values:
x represents object from which unused level has to be dropped
exclude represents factor levels which should be excluded even if present
except represents indices of columns from which levels should not be dropped

Example 1:

 `# Defining vector``x <``-` `c(``1``, ``3``, ``4``, ``8``, ``1``, ``5``, ``4``, ``4``, ``5``, ``6``)`` ` `# Defining factor object for vector``f <``-` `factor(x)`` ` `# Print factor object``cat(``"Factor object before deleting value:\n"``)``print``(f)``cat(``"\n"``)`` ` `# Delete value at index 2``f <``-` `f[``-``2``]`` ` `# Print factor object``cat(``"Factor object after deleting value:\n"``)``print``(f)``cat(``"\n"``)`` ` `cat(``"After dropping unused level:\n"``)``new_f <``-` `droplevels(f)``print``(new_f)`

Output:

```Factor object before deleting value:
[1] 1 3 4 8 1 5 4 4 5 6
Levels: 1 3 4 5 6 8

Factor object after deleting value:
[1] 1 4 8 1 5 4 4 5 6
Levels: 1 3 4 5 6 8

After dropping unused level:
[1] 1 4 8 1 5 4 4 5 6
Levels: 1 4 5 6 8
```

Example 2:

 `# Defining columns``x <``-` `factor(c(``7``, ``3``, ``3``, ``7``, ``5``, ``5``, ``1``))``y <``-` `factor(c(``1``, ``1``, ``1``, ``4``, ``4``, ``4``, ``2``))``z <``-` `c(``1``, ``5``, ``3``, ``2``, ``9``, ``4``, ``7``)`` ` `# Defining data frame``df <``-` `data.frame(x, y, z)``df <``-` `df[``1``:``6``, ]`` ` `# Print structure of data frame``str``(df)``cat(``"\n"``)`` ` `# Drop levels from data frame``df_drop <``-` `droplevels(df)`` ` `# Print structure of new data frame``str``(df_drop)`

Output:

```'data.frame':   6 obs. of  3 variables:
\$ x: Factor w/ 4 levels "1", "3", "5", "7": 4 2 2 4 3 3
\$ y: Factor w/ 3 levels "1", "2", "4": 1 1 1 3 3 3
\$ z: num  1 5 3 2 9 4

'data.frame':   6 obs. of  3 variables:
\$ x: Factor w/ 3 levels "3", "5", "7": 3 1 1 3 2 2
\$ y: Factor w/ 2 levels "1", "4": 1 1 1 2 2 2
\$ z: num  1 5 3 2 9 4
```

My Personal Notes arrow_drop_up