We’re exceedingly happy to announce the release of forcats 0.5.0 on CRAN. The goal of the forcats package is to provide a suite of tools that solve common problems with factors, including changing the order of levels or the values.
This release includes improvements to several existing functions, as well as a division of
fct_lump() into four new functions: fct_lump_min(), fct_lump_prop(), fct_lump_n(), and fct_lump_lowfreq(). For a complete inventory of updates in this version, please see the
Change log.
You can install forcats with:
install.packages("forcats")
Attach the package by running:
library(forcats)
New features
fct_lump() function family
Lumping seems like a popular activity, and there are many interesting variants. Splitting fct_lump() into pieces makes it much easier for this collection to grow over time.
fct_lump_min()lumps levels that appear fewer thanmintimes.fct_lump_prop()lumps levels that appear fewer thanprop * ntimes.fct_lump_n()lumps all levels except for thenmost frequent (or least frequent, ifn < 0).fct_lump_lowfreq()lumps together the least frequent levels, ensuring that"Other"is still the smallest level.
x <- factor(rep(LETTERS[1:8], times = c(40, 10, 5, 27, 3, 1, 1, 1)))
x %>% table()
#> .
#> A B C D E F G H
#> 40 10 5 27 3 1 1 1
x %>% fct_lump_min(5) %>% table()
#> .
#> A B C D Other
#> 40 10 5 27 6
x %>% fct_lump_prop(0.10) %>% table()
#> .
#> A B D Other
#> 40 10 27 11
x %>% fct_lump_n(3) %>% table()
#> .
#> A B D Other
#> 40 10 27 11
x %>% fct_lump_lowfreq() %>% table()
#> .
#> A D Other
#> 40 27 21
New arguments, and helpers
fct_collapse() now has an argument, other_level, which allows a user-specified Other level. Factors are now correctly collapsed when other_level is not NULL, and makes Other the last level.
fct_reorder2() now has a helper function, first2(), which sorts .y by the first value of .x.
Acknowledgements
A special thanks goes out to everyone who contributed to forcats during Tidyverse developer day: Kelly Bodwin, Layla Bouzoubaa, Scott Brenstuhl, Jonathan Carroll, Monica Gerber, John Goldin, Laura Gomez, Mitchell O’Hara-Wild, Riinu Pius, and Emily Robinson.
We’re extremely grateful for all 48 people who helped with this release: @808sAndBR, @adisarid, @alejandroschuler, @AmeliaMN, @AndrewKinsman, @avishaitsur, @batpigandme, @bczucz, @billdenney, @bxc147, @cuttlefish44, @dan-reznik, @dpprdan, @dylanjm, @GegznaV, @ghost, @gralgomez, @gtm19, @hadley, @hongcui, @jamiefo, @jburos, @jimhester, @johngoldin, @jonocarroll, @jtr13, @jwilliman, @jzadra, @kbodwin, @kei51e, @kyzphong, @labouz, @ledbettc, @lwjohnst86, @martinjhnhadley, @melissakey, @mitchelloharawild, @monicagerber, @mstr3336, @riinuots, @robinsones, @sgschreiber, @sinarueeger, @sindribaldur, @stelsemeyer, @VincentGuyader, @yimingli, and @zkamvar.