-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathforcats.qmd
126 lines (97 loc) · 3.39 KB
/
forcats.qmd
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
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
---
title: "[forcats](https://forcats.tidyverse.org/)"
toc: true
toc-depth: 4
format:
gfm: default
html:
css: ecosistemas.css
knitr:
opts_chunk:
echo: true
eval: true
error: true
collapse: true
comment: "#>"
editor: visual
editor_options:
chunk_output_type: console
---
> El paquete forcats provee herramientas para trabajar con factores, la estructura de datos de R para datos categóricos.
>
> Un factor es una variable categórica con un número finito de valores o niveles. En R los factores se utilizan habitualmente para realizar clasificaciones de los datos, estableciendo su pertenencia a los grupos o categorías determinados por los niveles del factor.
>
> En este documento se incluye la siguiente información:
>
> 1) Factores y sus niveles.
> 2) Modificación del orden de los factores.
> 3) Modificación de los niveles de los factores.
```{r libreria}
# install.packages("forcats")
library(forcats)
# o directamente
library(tidyverse)
```
## Modificar niveles de un factor con un orden específico
En algunas ocasiones, puede ser interesante modificar los niveles de un factor para una representación gráfica, ya que a lo mejor, el orden por defecto que establece R no resulta tan intuitivo por la propia naturaleza de los datos.
### `fct_relevel()`
```{r fct_relevel()}
# forcats
# se crea primero el dataset
data <- data.frame(
name = c("north","south", "south-east", "north-west", "south-west", "north-east", "west", "east"),
val = sample(seq(1, 10), 8))
# y después aplicando la función fct_relevel()
data |>
mutate(name = fct_relevel(name,
"north", "north-east", "east",
"south-east", "south", "south-west",
"west", "north-west")) |>
ggplot(aes(x = name, y = val)) +
geom_bar(stat = "identity") +
xlab("")
# R base
# se crea otro dataset
df <- data.frame(region = factor(c("A", "B", "C", "D", "E")),
values = c(12, 18, 21, 14, 34))
# reordenar los niveles del factor por región
df$region <- factor(df$region, levels = c("C", "B", "A", "D", "E"))
# mostrar los niveles del factor por región
levels(df$region)
# representación gráfica igual que en el ejemplo anterior, situando las barras en función de los niveles del factor region
barplot(df$values, names = df$region)
```
## Modificar el nombre de los niveles de un factor
En otras ocasiones, puede resultar interesante cambiar el nombre de un determinado nivel en un factor, para simplificarlo, armonizarlo para unir a otro dataset, etc.
### `fct_recode()`
```{r fct_recode()}
# se crea primero el factor
fruta <- factor(c("manzana", "pera", "plátano", "naranja"))
fruta
# forcats
fct_recode(fruta, M = "manzana", P = "pera", Pl = "plátano", N = "naranja") # lo ordena alfabéticamente
# R base
factor(fruta, labels = c("M", "P", "Pl", "N")) # aquí no
```
## Eliminar niveles
### `fct_drop()`
```{r fct_drop()}
# crear primero el factor
f <- factor(c("a", "b"), levels = c("a", "b", "c", "d"))
f
# forcats
fct_drop(f, only = "c")
# R base
droplevels(f, exclude = "c")
```
## Añadir niveles
### `fct_expand()`
```{r fct_expand()}
# crear el factor
g <- factor(c("a", "b"), levels = c("a", "b"))
g
# forcats
fct_expand(g, "c", "d", "e", "f")
# R base
factor(c("a", "b"), levels = c("a", "b", "c", "d", "e", "f"))
```