#Factors are used to categorize data

#Create a factor

my_factor <- factor(c('Fruits', 'Foods', 'Foods', 'Fruits', 'Birds'))
my_factor
## [1] Fruits Foods  Foods  Fruits Birds 
## Levels: Birds Foods Fruits
#check levels
levels(my_factor)
## [1] "Birds"  "Foods"  "Fruits"
#Levels argument inside
my_levels_factor <- factor(c('Fruits', 'Foods', 'Foods', 'Fruits', 'Birds'), levels=c('Fruits', 'Foods', 'Birds', 'Other'))
levels(my_levels_factor)
## [1] "Fruits" "Foods"  "Birds"  "Other"
#length
length(my_levels_factor)
## [1] 5
#Access factors

my_factor[3]
## [1] Foods
## Levels: Birds Foods Fruits
#change item value

my_factor_item <- factor(c('Fruits', 'Foods', 'Foods', 'Fruits', 'Birds'))
my_factor_item[3] <- 'Birds'
my_factor_item
## [1] Fruits Foods  Birds  Fruits Birds 
## Levels: Birds Foods Fruits
my_factor_item[4] <- 'Fish'
## Warning in `[<-.factor`(`*tmp*`, 4, value = "Fish"): invalid factor level, NA
## generated
#Add item

my_factor_change <- factor(
  c('Fruits', 'Foods', 'Foods', 'Fruits', 'Birds'),
  levels = c('Fruits', 'Foods', 'Birds', 'Fish')
)

my_factor_change[4] <- 'Fish'
my_factor_change
## [1] Fruits Foods  Foods  Fish   Birds 
## Levels: Fruits Foods Birds Fish