Factors with forcats
library (tidyverse)
library (forcats)
#creating factors
(x1 <- c ("Dec" , "Apr" , "Jan" , "Mar" ))
## [1] "Dec" "Apr" "Jan" "Mar"
#two possible issues
(x2 <- c ("Dec" , "Apr" , "Jam" , "Mar" ))
## [1] "Dec" "Apr" "Jam" "Mar"
## [1] "Apr" "Dec" "Jan" "Mar"
(month_levels <- c (
"Jan" , "Feb" , "Mar" , "Apr" , "May" , "Jun" ,
"Jul" , "Aug" , "Sep" , "Oct" , "Nov" , "Dec"
))
## [1] "Jan" "Feb" "Mar" "Apr" "May" "Jun" "Jul" "Aug" "Sep" "Oct" "Nov" "Dec"
y1 <- factor (x1, levels = month_levels)
y1
## [1] Dec Apr Jan Mar
## Levels: Jan Feb Mar Apr May Jun Jul Aug Sep Oct Nov Dec
## [1] Jan Mar Apr Dec
## Levels: Jan Feb Mar Apr May Jun Jul Aug Sep Oct Nov Dec
y2 <- factor (x2, levels = month_levels)
y2
## [1] Dec Apr <NA> Mar
## Levels: Jan Feb Mar Apr May Jun Jul Aug Sep Oct Nov Dec
#diagnose typos
y2 <- parse_factor (x2, levels = month_levels)
## Warning: 1 parsing failure.
## row col expected actual
## 3 -- value in level set Jam
## [1] Dec Apr <NA> Mar
## attr(,"problems")
## # A tibble: 1 x 4
## row col expected actual
## <int> <int> <chr> <chr>
## 1 3 NA value in level set Jam
## Levels: Jan Feb Mar Apr May Jun Jul Aug Sep Oct Nov Dec
#levels statement
factor (x1)
## [1] Dec Apr Jan Mar
## Levels: Apr Dec Jan Mar
f1 <- factor (x1, levels = unique (x1))
f1
## [1] Dec Apr Jan Mar
## Levels: Dec Apr Jan Mar
## [1] Dec Apr Jan Mar
## Levels: Apr Dec Jan Mar
## [1] "Apr" "Dec" "Jan" "Mar"