knitr::opts_chunk$set( collapse = TRUE, comment = "#>", fig.path = "README-" )
NOTE: This is a toy package created for expository purposes. It is not meant to actually be useful. If you want a package for factor handling, please see forcats.
Factors are a very useful type of variable in R, but they can also drive you nuts. This package provides some helper functions for the care and feeding of factors.
devtools::install_github("xinyaofan/foofactors")
fbind()
:library(foofactors) library(forcats) a <- factor(c("character", "hits", "your", "eyeballs")) b <- factor(c("but", "integer", "where it", "counts"))
Simply catenating two factors leads to a result that most don't expect.
c(a, b)
The fbind()
function glues two factors together and returns factor.
fbind(a, b)
Often we want a table of frequencies for the levels of a factor. The base table()
function returns an object of class table
, which can be inconvenient for downstream work. Processing with as.data.frame()
can be helpful but it's a bit clunky.
set.seed(1234) x <- factor(sample(letters[1:5], size = 100, replace = TRUE)) table(x) as.data.frame(table(x))
The freq_out()
function returns a frequency table as a well-named tbl_df
:
freq_out(x)
We regard a factor is a true factor if # unique values != length, otherwise it is a chracter. If we want to judge a factor is a true factor or a character,use our dec_fac() function to achieve this goal!
factor1<-factor(c("small","medium","big")) factor2<- factor(c("1","2","2"))
We know factor1 is a character while factor2 is a really factor.
dect_fac(factor1) dect_fac(factor2)
See, use our function can get the same result!
In R, we have a function fct_rev() to reorder a factor. This can help us reorder a factor in a descending order. This is sometimes useful when plotting a factor
x<-factor(c("1", "2", "3", "4")) y<-factor(c("a","b","c","d")) levels(fct_rev(x)) levels(fct_rev(y))
Use our reorder_des() function, you can get the same result!
levels(reorder_desc(x)) levels(reorder_desc(y))
Sometimes, we want to get the levels of a factor and also keep their previous order in the factor.
a<-factor(c("b","b","c","a")) b<-factor(c("2","2","1","4"))
And we know the results should be "b","c","a" and "2","1","4". Now we can use our function to check the answers.
levels(set_level(a)) levels(set_level(b))
See, the same answer as what we expect it to be.
Add the following code to your website.
For more information on customizing the embed code, read Embedding Snippets.