hw06-ziqiangt created by GitHub Classroom ## Hi, here is the STAT547 hw07 of ziqiang
This is to make some changes to an existing R package from jennybc. You can click Original foofactors to view more details about this cource.
My repository is structured as follows:
| Documents | Description | |--------------------------------------------------------------------------------------------------------------------------|------------------------------------------| | README.md | the markdown file for homework 7 | | README.rmd | the R-markdown file for homework 7 | | R | the R Scripts for homework 7 package | | testthat examples | test cases for the new functions | | hello-foofactors.Rmd | the vignettes R-markdown file | | Other | Other files such a .Rproj and .gitignore |
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("https://github.com/STAT545-UBC-students/hw07-ziqiangt")
Binding two factors via fbind()
:
library(foofactors)
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)
#> [1] 1 3 4 2 1 3 4 2
The fbind()
function glues two factors together and returns factor.
fbind(a, b)
#> [1] character hits your eyeballs but integer where it
#> [8] counts
#> Levels: but character counts eyeballs hits integer where it your
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)
#> x
#> a b c d e
#> 25 26 17 17 15
as.data.frame(table(x))
#> x Freq
#> 1 a 25
#> 2 b 26
#> 3 c 17
#> 4 d 17
#> 5 e 15
The freq_out()
function returns a frequency table as a well-named tbl_df
:
freq_out(x)
#> # A tibble: 5 x 2
#> x n
#> <fct> <int>
#> 1 a 25
#> 2 b 26
#> 3 c 17
#> 4 d 17
#> 5 e 15
f_detect(factor(c("a", "b", "c","a")))
#> [1] FALSE
f_detect(factor(c("a", "b", "c","d")))
#> [1] TRUE
f_reorder(factor(c("B", "A", "D")))
#> [1] B A D
#> attr(,"scores")
#> A B D
#> -1 -2 -3
#> Levels: D B A
f_set(factor(c("B", "A", "D")))
#> [1] B A D
#> Levels: B A D
df <- data.frame(
kids = factor(c(1,0,1,0,0,0), levels = c(0, 1),
labels = c("boy", "girl"))
)
levels(df$kids)
#> [1] "boy" "girl"
x_write(df, "./df_x.csv", "./df_x.txt")
read_return <- x_read("./df_x.csv", "./df_x.txt")
#> Parsed with column specification:
#> cols(
#> kids = col_character()
#> )
levels(read_return$kids)
#> [1] "boy" "girl"
Add the following code to your website.
For more information on customizing the embed code, read Embedding Snippets.