-
Notifications
You must be signed in to change notification settings - Fork 8
/
chapter4.Rmd
538 lines (408 loc) · 21.2 KB
/
chapter4.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
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
295
296
297
298
299
300
301
302
303
304
305
306
307
308
309
310
311
312
313
314
315
316
317
318
319
320
321
322
323
324
325
326
327
328
329
330
331
332
333
334
335
336
337
338
339
340
341
342
343
344
345
346
347
348
349
350
351
352
353
354
355
356
357
358
359
360
361
362
363
364
365
366
367
368
369
370
371
372
373
374
375
376
377
378
379
380
381
382
383
384
385
386
387
388
389
390
391
392
393
394
395
396
397
398
399
400
401
402
403
404
405
406
407
408
409
410
411
412
413
414
415
416
417
418
419
420
421
422
423
424
425
426
427
428
429
430
431
432
433
434
435
436
437
438
439
440
441
442
443
444
445
446
447
448
449
450
451
452
453
454
455
456
457
458
459
460
461
462
463
464
465
466
467
468
469
470
471
472
473
474
475
476
477
478
479
480
481
482
483
484
485
486
487
488
489
490
491
492
493
494
495
496
497
498
499
500
501
502
503
504
505
506
507
508
509
510
511
512
513
514
515
516
517
518
519
520
521
522
523
524
525
526
527
528
529
530
531
532
533
534
535
536
537
538
---
title_meta : Capítulo 4
title : Factores
description : Existen un tipo de variables llamadas variables categóricas. Por ejemplo, el género puede ser femenino o masculino. En R las variables categóricas son llamadas factores. Dada la importancia de los factores en el analisis de datos, vamos a aprender a crearlos y a todo lo relacionado con su manejo. Empecemos!
framework : datacamp
mode : selfcontained
--- type:NormalExercise xp:100 key:74d14d2ce0
## ¿Que son los factores y para qué se usan?
En este capítulo vamos a sumergirnos en el mundo de los **factores**.
El termino factor se refiere a un tipo de datos utilizado por R para almacenar variables categóricas. Las variables categóricas (como su nombre lo indica) son aquellas que pueden variar dentro de un **número limitado de categorías**. En contraste, una variable numérica continua puede tomar, en principio, infinitos valores.
En nuestros análisis, es importante que R sepa si estamos trabajando con una variable continua o categórica, debido a que los modelos estadísticos y en los análisis de datos se tratan estos tipos de manera diferente.
Un buen ejemplo de una variable categórica es 'Género'. Un individuo puede ser de género "Masculino" o "Femenino" (haciendo caso omiso de individuos intergénero). Así que "Masculino" y "Femenino" son los valores que puede tomar la variable 'Género'.
*** =instructions
Asigna a la variable `teoria` el valor `"R usa factores para variables categoricas"`
*** =hint
En este punto, este ejercicio debe de ser muy sencillo.
*** =pre_exercise_code
```{r eval=FALSE}
# no pec
```
*** =sample_code
```{r eval=FALSE}
# Asigna a la variable teoria el tema de este capítulo
```
*** =solution
```{r eval=FALSE}
# Asigna a la variable teoria el tema de este capítulo
teoria <- "R usa factores para variables categoricas"
```
*** =sct
```{r eval=FALSE}
set_language("es")
test_object("teoria",
undefined_msg = "Asegúrate de haber definido la variable <code>teoria</code>.",
incorrect_msg = "Asegúrate de haber asignado el valor correcto a <code>teoria</code>. Recuerda que R distingue las mayúsculas");
success_msg("Bien! ¿Listo para empezar? continuemos!")
```
*** =skills
1
--- type:NormalExercise xp:100 key:ce9c3e1d79
## ¿Que son los factores y para qué se usan? (2)
Para crear factores en R usamos la función [`factor()`](http://www.rdocumentation.org/packages/base/functions/factor). Lo primero que tenemos que hacer es crear un vector que contenga todas las observaciones de nuestra variable. Por ejemplo el vector `genero` contiene el género de 5 individuos diferentes:
```
genero <- c("Masculino","Femenino","Femenino","Masculino","Masculino")
```
Como hemos visto, esta variable puede tomar solo dos valores o categorías. En términos de R nos referimos a estas categorías como los **niveles** (**levels**), en este caso los niveles son: "Masculino" y "Femenino".
La función [`factor()`](http://www.rdocumentation.org/packages/base/functions/factor) codificará al vector `genero` en un objeto de R llamado **factor** :
```
factor_genero <- factor(genero)
```
*** =instructions
Asigna a `factor_genero` el vector de caracteres `genero` convertido a un **factor**. Fíjate en la consola y nota que R imprime los niveles del factor debajo de los valores del mismo.
*** =hint
Simplemente utiliza la función [`factor()`](http://www.rdocumentation.org/packages/base/functions/factor) en `genero`. Lee bien el ejercicio, la respuesta ya está en alguna parte...
*** =pre_exercise_code
```{r eval=FALSE}
# no pec
```
*** =sample_code
```{r eval=FALSE}
genero <- c("Masculino", "Femenino", "Femenino", "Masculino", "Masculino")
# Define factor_genero usando la función factor()
factor_genero <-
```
*** =solution
```{r eval=FALSE}
genero <- c("Masculino", "Femenino", "Femenino", "Masculino", "Masculino")
# Define factor_genero usando la función factor()
factor_genero <- factor(genero)
```
*** =sct
```{r eval=FALSE}
set_language("es")
test_object("factor_genero",
undefined_msg = "Asegúrate de definir <code>factor_genero</code>.",
incorrect_msg = "Asignaste correctamente <code>genero</code> a <code>factor_genero</code>?")
success_msg("Muy bien! Si quieres saber màs sobre la función <code>factor()</code> puedes escribir en la consola <code>?factor</code> esto mostrarà la ayuda para esa función. Continuemos!");
```
*** =skills
1
--- type:NormalExercise xp:100 key:2fe0390cca
## ¿Que son los factores y para qué se usan? (3)
Existen dos tipos de variables categóricas: **nominales** y **ordinales**.
Una variable categórica nominal es una variable cuyos niveles no tienen ningún orden implícito. Esto significa no tiene sentido preguntarse si un valor es "mayor" o "menor" que otro. Por ejemplo, pensemos en la variable `Género` que como vimos tiene los niveles `Masculino` y `Femenino`, no tiene sentido decir que `Masculino` sea "mayor" o "menor" que `Femenino`. (Aunque los machistas o las feministas extremas pueden no estar de acuerdo!)
En contraste, las variables categóricas ordinales si poseen un orden natural. Por ejemplo la variable categórica `desempeno_laboral` que tenga las categorías o niveles: `Bajo`, `Medio`, `Alto`. Es claro que existe un orden natural en los niveles de esta variable `Medio` es "menos" que `Alto` y a su vez "mayor que" `Bajo`.
*** =instructions
Solo da clic a 'Submit Answer' y fíjate como R construye e imprime las variables nominales y ordinales. No te preocupes si no entiendes todo el código, ya nos ocuparemos de eso.
*** =hint
Solo da clic a 'Submit Answer' y fíjate en la consola.
*** =pre_exercise_code
```{r eval=FALSE}
# no pec
```
*** =sample_code
```{r eval=FALSE}
genero <- c("Masculino", "Femenino", "Femenino", "Masculino", "Masculino")
desempeno_laboral <- c("Alto", "Bajo", "Alto", "Bajo", "Medio")
factor_genero <- factor(genero)
factor_genero
factor_desempeno_laboral <- factor(desempeno_laboral, order = TRUE, levels = c("Bajo", "Medio", "Alto"))
factor_desempeno_laboral
```
*** =solution
```{r eval=FALSE}
genero <- c("Masculino", "Femenino", "Femenino", "Masculino", "Masculino")
desempeno_laboral <- c("Alto", "Bajo", "Alto", "Bajo", "Medio")
factor_genero <- factor(genero)
factor_genero
factor_desempeno_laboral <- factor(desempeno_laboral, order = TRUE, levels = c("Bajo", "Medio", "Alto"))
factor_desempeno_laboral
```
*** =sct
```{r eval=FALSE}
set_language("es")
msg = "No cambies nada del código del editor. Solo da clic a Submit Answer y fíjate en la solución!"
test_object("genero", undefined_msg = msg, incorrect_msg = msg)
test_object("desempeno_laboral", undefined_msg = msg, incorrect_msg = msg)
test_object("factor_desempeno_laboral", undefined_msg = msg, incorrect_msg = msg)
test_output_contains("factor_genero", incorrect_msg = msg)
test_output_contains("factor_desempeno_laboral", incorrect_msg = msg)
success_msg("¿Puedes ver que està pasando en este ejercicio? Bien! Sigamos y estudiemos los factores en detalle.")
```
*** =skills
1
--- type:NormalExercise xp:100 key:8574ba67cd
## Niveles de los factores
Cuando trabajas con datos categóricos a veces notarás que los factores vienen dados con ciertos niveles. Sin embargo, frecuentemente es conveniente cambiar los niveles por varias razones, por ejemplo por claridad en los análisis. R permite modificar los niveles con la función [`levels()`](http://www.rdocumentation.org/packages/base/functions/levels):
```
levels(vector_factor) <- c("nombre1","nombre2",...)
```
Un buen caso de uso para esta función es por ejemplo si tuviéramos datos de una encuesta: una pregunta estándar es el género de quien contesta la encuesta. Supongamos que quien digitó la encuesta codificó los niveles de la variable 'Género' como `"M"` y `"F"`.
```
genero <- c("M","F","F","M","M")
```
Cuando empiezas a hacer el análisis de la encuesta, te das cuenta que es mucho mejor si los niveles de tus variables categóricas tienen nombres que con sentido y no sólo letras como `M` y `F`, por eso decides asignar los nombres `"Masculino"` y `"Femenino"` en lugar de `"M"` y `"F"`.
*** =instructions
- Cambia el vector de caracteres `genero` a un factor. Asigna el valor a `factor_genero`
- Cambia los niveles de los factores a `"Masculino"` y `"Femenino"`.
*** =hint
Fíjate en el orden en que asignas los niveles de los factores. Pista: fíjate en el orden en que los niveles son impresos en la consola.
*** =pre_exercise_code
```{r eval=FALSE}
# no pec
```
*** =sample_code
```{r eval=FALSE}
genero <- c("M", "F", "F", "M", "M")
# Asigna el vector genero como un factor a factor_genero
factor_genero <-
# Especifica los niveles de factor_genero
levels(factor_genero) <-
factor_genero
```
*** =solution
```{r eval=FALSE}
genero <- c("M", "F", "F", "M", "M")
# Asigna el vector genero como un factor a factor_genero
factor_genero <- factor(genero)
# Especifica los niveles de factor_genero
levels(factor_genero) <- c("Femenino", "Masculino")
factor_genero
```
*** =sct
```{r eval=FALSE}
set_language("es")
msg = "No cambies el código que crea <code>genero</code>!"
test_object("genero", undefined_msg = msg, incorrect_msg = msg)
test_function("factor","x",
incorrect_msg = "Usaste de manera correcta la funciín <code>factor()</code> para definir <code>factor_genero</code>?")
test_object("factor_genero", eq_condition = "equal",
undefined_msg = "Asegúrate de definir la variable <code>factor_genero</code>.",
incorrect_msg = paste("Asignaste los niveles correctos a <code>factor_genero</code>?",
"El orden de los nombres de los niveles es muy importante!"))
success_msg("Excelente! Vamos al siguiente ejercicio")
```
*** =skills
1
--- type:NormalExercise xp:100 key:b2dd155b98
## Resumiendo un factor
Luego de terminar este curso, una de nuestras funciones favoritas en R será [`summary()`](http://www.rdocumentation.org/packages/base/functions/summary) (resumen). Esta función nos dará una visión general del objeto o variable que usemos como argumento:
```
summary(alguna_variable)
```
Regresando a nuestro ejemplo de la encuesta, nos gustaría saber cuántas respuestas tenemos con `"Masculino"` y cuantas con `"Femenino"`. La función [`summary()`](http://www.rdocumentation.org/packages/base/functions/summary) nos da la respuesta a esta pregunta.
*** =instructions
Usa la función [`summary()`](http://www.rdocumentation.org/packages/base/functions/summary) en `genero` y `factor_genero`. Interpreta los resultados en ambos casos.
*** =hint
Solo usa la función [`summary()`](http://www.rdocumentation.org/packages/base/functions/summary) en `genero` y `factor_genero`, así de simple!
*** =pre_exercise_code
```{r eval=FALSE}
# no pec
```
*** =sample_code
```{r eval=FALSE}
genero <- c("M", "F", "F", "M", "M")
factor_genero <- factor(genero)
levels(factor_genero) <- c("Femenino", "Masculino")
factor_genero
# Escribe el código para ver el resumen de genero
# Escribe el código para ver el resumen de factor_genero
```
*** =solution
```{r eval=FALSE}
genero <- c("M", "F", "F", "M", "M")
factor_genero <- factor(genero)
levels(factor_genero) <- c("Femenino", "Masculino")
factor_genero
# Escribe el código para ver el resumen de genero
summary(genero)
# Escribe el código para ver el resumen de factor_genero
summary(factor_genero)
```
*** =sct
```{r eval=FALSE}
set_language("es")
msg = "No cambies nada de la definición de los vectores <code>genero</code> y <code>factor_genero</code>."
test_object("genero", undefined_msg = msg, incorrect_msg = msg)
test_object("factor_genero", eq_condition = "equal", undefined_msg = msg, incorrect_msg = msg)
test_function("summary", "object",
incorrect_msg = c("¿Usaste la función summary() en <code>genero</code>?", "¿Usaste la función summary() en <code>factor_genero</code>?"))
success_msg("Bien! Fíjate en la salida. El hecho de que hayas identificado como un factor a factor_genero le permite a R mostrar el número de elementos en cada categoría.")
```
*** =skills
1
--- type:NormalExercise xp:100 key:90689511f5
## Batalla de los sexos
_"Todos los animales son iguales, pero algunos son más iguales que otros." -- George Orwell_
En `factor_genero` tenemos un factor con dos niveles: Masculino y Femenino. ¿Cómo sabemos lo que piensa R sobre los niveles de este factor? ¿Es R machista o feminista?
*** =instructions
Lee el código en el editor y da clic a 'Submit Answer' para que veas lo que R piensa sobre los géneros Masculino y Femenino.
*** =hint
Solo da clic a 'Submit Answer' y fíjate en lo que se imprime en la consola.
*** =pre_exercise_code
```{r eval=FALSE}
# no pec
```
*** =sample_code
```{r eval=FALSE}
genero <- c("M", "F", "F", "M", "M")
factor_genero <- factor(genero)
levels(factor_genero) <- c("Femenino", "Masculino")
# Masculino
factor_genero[1]
# Femenino
factor_genero[2]
# Batalla de los sexos:¿Es Masculino mayor que Femenino?
factor_genero[1] > factor_genero[2]
```
*** =solution
```{r eval=FALSE}
genero <- c("M", "F", "F", "M", "M")
factor_genero <- factor(genero)
levels(factor_genero) <- c("Femenino", "Masculino")
# Masculino
factor_genero[1]
# Femenino
factor_genero[2]
# Batalla de los sexos: ¿Es Masculino mayor que Femenino?
factor_genero[1] > factor_genero[2]
```
*** =sct
```{r eval=FALSE}
set_language("es")
msg = "No cambies nada del código del editor"
test_object("genero", undefined_msg = msg, incorrect_msg = msg)
test_object("factor_genero", eq_condition = "equal", undefined_msg = msg, incorrect_msg = msg)
test_output_contains("factor_genero[1] > factor_genero[2]", incorrect_msg = "No cambies la última línea, queremos resolver la batalla de los sexos de una vez por todas!")
success_msg("Naaaa, parece que R es neutral sobre los géneros. O quizàs solo quiere evitarse discusiones (con las mujeres) ;-).")
```
*** =skills
1
--- type:NormalExercise xp:100 key:a93ac0edef
## Factores con niveles ordenados
Como los niveles `"Masculino"` y `"Femenino"` son niveles no ordenados de nuestro factor `genero` R responde con un mensaje de advertencia de que esa comparación (por medio del símbolo `>`) no tiene sentido en el caso de factores nominales (no ordenados).
Pero esto no es siempre el caso. A veces vamos a trabajar con factores que tienen un orden natural entre estas categorías. En este caso tenemos que darle la información a R sobre cuál es el orden de los niveles. Supongamos que estamos analizando el desempeño laboral de los trabajadores en una organización y las calificaciones posibles son `"Bajo"`, `"Medio"` y `"Alto"` y que guardas las información en el vector `desempeno`.
*** =instructions
Construye el vector `desempeno` sabiendo que:
- Trabajador 1 tiene un desempeño Medio,
- Trabajador 2 tiene un desempeño Bajo,
- Trabajador 3 tiene un desempeño Bajo,
- Trabajador 4 tiene un desempeño Medio,
- Trabajador 5 tiene un desempeño Alto,
No hay necesidad de especificar que este vector es un factor.
*** =hint
Asigna a `desempeno` un vector que contenga los caracteres `"Medio"`, `"Bajo"` ...
*** =pre_exercise_code
```{r eval=FALSE}
# no pec
```
*** =sample_code
```{r eval=FALSE}
# Crea el vector desempeno
desempeno <-
```
*** =solution
```{r eval=FALSE}
# Crea el vector desempeno
desempeno <- c("Medio", "Bajo", "Bajo", "Medio", "Alto")
```
*** =sct
```{r eval=FALSE}
set_language("es")
test_object("desempeno",
undefined_msg = "Asegúrate de definir la variable <code>desempeno</code>.",
incorrect_msg = "Asigna cuidadosamente los valores correctos al vector desempeno.")
success_msg("Buen trabajo! Vamos al siguiente ejercicio.")
```
*** =skills
1
--- type:NormalExercise xp:100 key:b51c023d03
## Factores con niveles ordenados (2)
El vector `desempeno` debería de ser convertido a un factor ordenado porque sus niveles tienen un orden natural. De forma predeterminada la función [`factor()`](http://www.rdocumentation.org/packages/base/functions/factor) transforma el vector `desempeno` en un factor no ordenado. Para crearlo como un factor ordenado necesitamos usar los argumentos adicionales: `ordered` y `levels`.
```
factor(algun_vector, ordered = TRUE, levels = c("Nivel1", "Nivel2" ...))
```
Al dar el valor `TRUE` al argumento `ordered` en la función [`factor()`](http://www.rdocumentation.org/packages/base/functions/factor), indicamos que es un factor ordenado. Con el argumento `levels` damos los valores de los niveles en el orden correcto, por ejemplo `levels = c("Bajo", "Medio", "Alto")`.
*** =instructions
Usa el código de ejemplo para definir la variable `factor_desempeno`. Toma en cuenta que hay un orden específico para estos niveles. No cambies nada del código, éste imprimirá el factor resultante y generará el resumen del mismo.
*** =hint
Usa la función [`factor()`](http://www.rdocumentation.org/packages/base/functions/factor) para crear `factor_desempeno` usando `desempeno`. El argumento `order` debe ser igual a `TRUE`. Los niveles en este caso deben de ser c("Bajo", "Medio", "Alto").
*** =pre_exercise_code
```{r eval=FALSE}
# no pec
```
*** =sample_code
```{r eval=FALSE}
desempeno <- c("Medio", "Bajo", "Bajo", "Medio", "Alto")
# Escribe el código para generar el factor ordenado
factor_desempeno <-
# Imprime a la consola
factor_desempeno
# R imprime el resumen automágicamente en el orden correcto
summary(factor_desempeno)
```
*** =solution
```{r eval=FALSE}
desempeno <- c("Medio", "Bajo", "Bajo", "Medio", "Alto")
# Escribe el código para generar el factor ordenado
factor_desempeno <- factor(desempeno, ordered = TRUE, levels= c("Bajo", "Medio", "Alto"))
# Imprime a la consola
factor_desempeno
# R imprime el resumen automágicamente en el orden correcto
summary(factor_desempeno)
```
*** =sct
```{r eval=FALSE}
set_language("es")
msg = "No cambies el código que crea el vector<code>desempeno</code>."
test_object("desempeno", undefined_msg = msg, incorrect_msg = msg)
test_correct({
test_object("factor_desempeno", eq_condition = "equal",
undefined_msg = "Asegúrate de definir la variable <code>factor_desempeno</code>.",
incorrect_msg = "Asegurate de que creaste de manera adecuada a factor_desempeno. Fíjate en el orden en que pusiste los niveles en el argumento levels.")
},{
test_function("factor", c("x", "levels", "ordered"), incorrect_msg = "Parece que los argumentos de la función <code>factor</code> no tienen los argumentos correctos de <code>levels</code> y <code>ordered</code>.")
})
success_msg("Muy bien! Mira la consola, se muestra que los niveles tienen un orden dado por el signo <code><</code> Continuemos al último ejercicio!");
```
*** =skills
1
--- type:NormalExercise xp:100 key:bda1c0d06a
## Comparando vectores ordenados
Al tener un mal día en el trabajo, el `Trabajador 2` entra a tu oficina y empieza a quejarse de que el `Trabajador 5` está atrasando todos los proyectos porque su desempeño en el trabajo es "Bajo". Como sabes que el `Trabajador 2` tiene la reputación de “problemático” decides averiguar si lo que dice tiene sentido.
Dado que `factor_desempeno` es un factor ordenado, esto te permite comparar sus diferentes elementos, a los trabajadores en este caso. Podemos simplemente utilizar operadores de comparación bien conocidos.
*** =instructions
Averigua si el desempeño del Trabajador 2 es mejor que el del Trabajador 5. Asigna el resultado a la variable `comparacion`. Recuerda `a > b` te permite saber si `a` es mayor que `b`.
*** =hint
Compara los elementos de interés usando el operador `>`. Algo así:
```
vector[1] > vector[2]
```
Este código evalúa si el primer elemento del vector es mayor que el segundo.
*** =pre_exercise_code
```{r eval=FALSE}
# no pec
```
*** =sample_code
```{r eval=FALSE}
desempeno <- c("Medio", "Bajo", "Bajo", "Medio", "Alto")
factor_desempeno <- factor(desempeno, ordered = TRUE, levels= c("Bajo", "Medio", "Alto"))
# Escribe tu código
comparacion <-
# ¿El desempeño del Trabajador 2 es mayor que el del Trabajador 5 ?
comparacion
```
*** =solution
```{r eval=FALSE}
desempeno <- c("Medio", "Bajo", "Bajo", "Medio", "Alto")
factor_desempeno <- factor(desempeno, ordered = TRUE, levels= c("Bajo", "Medio", "Alto"))
# Escribe tu código
comparacion <- factor_desempeno[2] > factor_desempeno[5]
# Is data analyst 2 faster than data analyst 5?
comparacion
```
*** =sct
```{r eval=FALSE}
set_language("es")
msg = "No cambies nada del código que crea los vectores <code>desempeno</code> y <code>factor_genero</code>!"
test_object("desempeno", undefined_msg = msg, incorrect_msg = msg)
test_object("factor_desempeno", eq_condition = "equal", undefined_msg = msg, incorrect_msg = msg)
test_object("comparacion",
undefined_msg = "Define la variable <code>comparacion</code>.",
incorrect_msg = "Parece que <code>comparacion</code> no contiene el resultado de la comparación solicitada. Fíjate en los índices.");
success_msg("Bellissimo! ¿QuÞ es lo que nos dice este resultado? El Trabajador 2 se parece darle validez a su fama de problemàtico… es lo que nos dice la evidencia de los datos! \n
Acà terminamos el capítulo sobre factores. Ahora que sabemos bastante sobre vectores, matrices y factores podemos entrar al maravilloso mundo de los data frames, una de las estructuras de datos màs importantes en R!")
```
*** =skills
1