1 Goal


The goal of this tutorial is to learn how to add empty levels to a factor.


2 Data preparation


# In this tutorial we are going to use the iris dataset
data("iris")
str(iris)
## 'data.frame':    150 obs. of  5 variables:
##  $ Sepal.Length: num  5.1 4.9 4.7 4.6 5 5.4 4.6 5 4.4 4.9 ...
##  $ Sepal.Width : num  3.5 3 3.2 3.1 3.6 3.9 3.4 3.4 2.9 3.1 ...
##  $ Petal.Length: num  1.4 1.4 1.3 1.5 1.4 1.7 1.4 1.5 1.4 1.5 ...
##  $ Petal.Width : num  0.2 0.2 0.2 0.2 0.2 0.4 0.3 0.2 0.2 0.1 ...
##  $ Species     : Factor w/ 3 levels "setosa","versicolor",..: 1 1 1 1 1 1 1 1 1 1 ...
# We can know how many of each level do we have in the Species factor
str(iris$Species)
##  Factor w/ 3 levels "setosa","versicolor",..: 1 1 1 1 1 1 1 1 1 1 ...
table(iris$Species)
## 
##     setosa versicolor  virginica 
##         50         50         50

3 Add empty level to factor


# We can add a new level to the factor
iris$Species <- factor(iris$Species, levels = c(levels(iris$Species), "Echeveria"))

# Now we check the new level
str(iris$Species)
##  Factor w/ 4 levels "setosa","versicolor",..: 1 1 1 1 1 1 1 1 1 1 ...
table(iris$Species)
## 
##     setosa versicolor  virginica  Echeveria 
##         50         50         50          0
# Another way to add a new level to a factor could be
# Adding a level at the n+1 position 
levels(iris$Species)[length(levels(iris$Species))+1] <- "Aloe Vera"

# Now we check the new level
str(iris$Species)
##  Factor w/ 5 levels "setosa","versicolor",..: 1 1 1 1 1 1 1 1 1 1 ...
table(iris$Species)
## 
##     setosa versicolor  virginica  Echeveria  Aloe Vera 
##         50         50         50          0          0

4 Conclusion


In this tutorial we have learnt different ways to add an empty level to a factor.