-
Notifications
You must be signed in to change notification settings - Fork 30
/
README.Rmd
109 lines (75 loc) · 2.31 KB
/
README.Rmd
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
---
output:
md_document:
variant: markdown_github
---
<!-- README.md is generated from README.Rmd. Please edit that file -->
```{r, echo = FALSE}
knitr::opts_chunk$set(
collapse = TRUE,
comment = "#>",
fig.path = "README-"
)
```
**NOTE: This is a toy package created for expository purposes by Jenny Bryan, and edited by Nivretta Thatra for Stat 545 2016. It is not meant to actually be useful. If you want a package for factor handling, please see [forcats](https://cran.r-project.org/package=forcats).**
### foofactors
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.
### Installation
```{r installation, eval = FALSE}
library(tidyverse)
library("devtools")
devtools::install_github("nivretta/foofactors")
```
### Quick demo
###Keeping order of levels via `givenorder()`:
```{r}
library(foofactors)
z <- factor(c("b", "c", "a", "e", "b"))
```
Normally the levels will be ordered alphabetically.
```{r}
factor(z)
```
Sometimes you'd like to maintain the order levels in which they appear in the data.
```{r}
givenorder(z)
```
###Change some factors to characters via `character()`:
Check for factors where number of unique values = length, and change to character.
```{r}
m <- factor(c("a", "b", "c", "d"))
class(m)
m_character <- character(m)
class(m_character)
```
Otherwise print nochange.
```{r}
n <- factor(c("a", "b", "c", "d", "a"))
class(n)
character(n)
```
###Jenny's given functions
Binding two factors via `fbind()`:
```{r}
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.
```{r}
c(a, b)
```
The `fbind()` function glues two factors together and returns factor.
```{r}
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.
```{r}
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`:
```{r}
freq_out(x)
```