-
Notifications
You must be signed in to change notification settings - Fork 3
/
Copy pathsesion01.Rmd
745 lines (537 loc) · 44.2 KB
/
sesion01.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
539
540
541
542
543
544
545
546
547
548
549
550
551
552
553
554
555
556
557
558
559
560
561
562
563
564
565
566
567
568
569
570
571
572
573
574
575
576
577
578
579
580
581
582
583
584
585
586
587
588
589
590
591
592
593
594
595
596
597
598
599
600
601
602
603
604
605
606
607
608
609
610
611
612
613
614
615
616
617
618
619
620
621
622
623
624
625
626
627
628
629
630
631
632
633
634
635
636
637
638
639
640
641
642
643
644
645
646
647
648
649
650
651
652
653
654
655
656
657
658
659
660
661
662
663
664
665
666
667
668
669
670
671
672
673
674
675
676
677
678
679
680
681
682
683
684
685
686
687
688
689
690
691
692
693
694
695
696
697
698
699
700
701
702
703
704
705
706
707
708
709
710
711
712
713
714
715
716
717
718
719
720
721
722
723
724
725
726
727
728
729
730
731
732
733
734
735
736
737
738
739
740
741
742
743
744
745
---
title: "Master en Big Data. Fundamentos Matemáticos del Análisis de Datos (FMAD)."
author: "Fernando San Segundo"
date: 'Curso 2021-22. Última actualización: `r format(Sys.time(), "%Y-%m-%d")`'
output:
beamer_presentation:
toc: yes
# keep_tex: yes
# keep_md: yes
includes:
in_header: beamer-header-simple.txt
colortheme: seahorse
slide_level: 2
theme: Boadilla
fontsize: 9pt
subtitle: 'Sesión 1: Presentación. Instalación de Software y Primeros Pasos'
always_allow_html: yes
bibliography: MBDFME.bib
csl: ams-review.csl
---
```{r set-options, echo=FALSE, purl=FALSE}
options(width = 60)
library(knitr)
knitr::opts_chunk$set(comment = '', fig.width = 6, fig.height = 6,
tidy = TRUE, tidy.opts=list(arrow=TRUE, indent=2))
def.chunk.hook <- knitr::knit_hooks$get("chunk")
knitr::knit_hooks$set(chunk = function(x, options) {
x <- def.chunk.hook(x, options)
ifelse(options$size != "normalsize", paste0("\\", options$size,"\n\n", x, "\n\n \\normalsize"), x)
})
if (grepl(pattern = "cloud", getwd())){
homeDir <- "/cloud/project/"
} else {
homeDir <- "./"
}
figpath <- function(figname){
paste0(homeDir,"fig/", figname)
}
```
```{r echo = FALSE}
## title: 'Master en Big Data. Fundamentos matemáticos del análisis de datos.'
## author: "Fernando San Segundo"
## subtitle: "Sesión 1: Presentación. Instalación de Software y Primeros Pasos"
```
# Presentación del curso.
## Preliminares.
+ **Profesores:**
- Fernando San Segundo, Contacto: \link{mailto://[email protected]}{[email protected]}
- Santiago Cano, Contacto: \link{mailto://[email protected]}{[email protected]}
+ La Guía Docente de la asignatura, así como el resto del material está accesible desde \link{https://sifo.comillas.edu/course/view.php?id=34420}{Moodle}.
+ La asignatura se plantea con un enfoque práctico y conceptual. Se trata de presentar las ideas fundamentales de la Estadística y el Análisis de Datos y hacerlo mediante la práctica computacional, usando el ecosistema de R como herramienta.
---
- La estructura básica de un Análisis de Datos es, según [@Wickham2016], esta:
```{r echo=FALSE, comment=NULL, fig.align='center', out.width = "70%", purl=FALSE}
include_graphics(figpath("01-fig00.png"))
```
Vamos a conocer las herramientas que R nos aporta para facilitar cada uno de los pasos de este proceso.
## El diagrama de Venn del Análisis de Datos.
- Este diagrama creado por \link{http://drewconway.com/zia/2013/3/26/the-data-science-venn-diagram}{Drew Conway} es uno de los más usados para describir el Análisis de Datos.
```{r echo=FALSE, comment=NULL, fig.align='center', out.width = "50%", purl=FALSE}
include_graphics(figpath("Data_Science_VD.png"))
```
Nuestro curso se va a mover en la parte superior del diagrama, para proporcionaros las competencias necesarias para otras asignaturas del máster.
## Danger zone number 2!
- El diagrama de Conway avisa de una zona de peligro para quienes rehuyen el uso correcto de la Estadística. Pero hay que tener cuidado también con otra zona de peligro para los practicantes de Machine Learning, que ilustra bien esta tira de [\textcolor{blue}{{XKCD}}](https://xkcd.com/).
```{r echo=FALSE, eval=FALSE, purl=FALSE}
library(RXKCD)
xkcdpic = getXKCD(which = "1831", saveImg = TRUE)
file.copy(from = "Here to Help.png", to = "./fig/xkcd_here_to_help.png")
file.remove("Here to Help.png")
```
```{r echo=FALSE, message=FALSE, fig.align='center', out.width = "100%", purl=FALSE}
include_graphics(figpath("xkcd_here_to_help.png"))
```
## El ecosistema de R.
- R es uno de los lenguajes de programación más usados para el análisis de datos y uno de los que han experimentado un crecimiento más rápido \link{https://www.oreilly.com/ideas/2017-european-data-science-salary-survey}{en los últimos años}.
```{r echo=FALSE, comment=NULL, fig.align='center', out.width = "80%", purl=FALSE}
include_graphics(figpath("DataScienceProgLanguageSurvey2017.png"))
```
- La comunidad de usuarios de R es uno de los pilares que fundamentan el éxito del lenguaje. La documentación disponible hace extremadamente fácil encontrar respuestas a casi todas las preguntas que vas a plantearte como usuario de R. Además hay un amplísimo catálogo bibliográfico y cientos de cursos disponibles para dominar cualquier aspecto de R. Aquí os enseñaremos algunos de nuestros favoritos.
# Instalación de software
## Instalación de R
```{r echo=FALSE, comment=NULL, fig.align='center', out.width = "55%", purl=FALSE}
include_graphics(figpath("01-fig01.png"))
```
- La página oficial de R es
\begin{center}
\link{https://www.r-project.org/}{www.r-project.org}
\end{center}
Para que te sirva de referencia, la versión de R que estamos usando al escribir estas notas es: `r R.version.string`
- Para descargar el instalador de R para tu sistema usa directamente [\textcolor{blue}{{este enlace}}](https://cloud.r-project.org/). Si vas a instalar en Mac o Linux y tienes alguna duda habla con tu profesor (especialmente si usas un Mac con procesador M1). La instalación es bastante sencilla, pero si quieres hacerte una idea previa aquí tienes un vídeo reciente sobre el \link{https://youtu.be/qtiXU6rfWQE}{proceso de instalación en Windows}. Y también puedes consultar \link{https://rafalab.github.io/dsbook/installing-r-rstudio.html}{este enlace}.
- **¡Instala R antes de continuar!**
## Instalación de RStudio
```{r echo=FALSE, comment=NULL, fig.align='center', out.width = "55%", purl=FALSE}
include_graphics(figpath("01-fig02.png"))
```
- Trabajar con R directamente no es muy cómodo, así que usaremos un entorno de trabajo llamado \link{https://www.rstudio.com/}{RStudio Desktop}. Descarga la versión gratuita (free) para tu sistema de RStudio Desktop usando \link{https://www.rstudio.com/products/rstudio/download/}{este enlace}. De nuevo, para ver el proceso por adelantado, aquí tienes un vídeo de una \link{https://youtu.be/tzShg0l7Iac}{instalación reciente de RStudio en Windows}.
- **¡Instala RStudio antes de continuar!**
- Versión disponible en la fecha de publicación de estas notas: `r rstudioapi::versionInfo()$version`
## Software adicional
- \LaTeX: es necesario para producir ficheros en formato pdf a partir de nuestros análisis de datos. Aunque es posible que nos baste con instalar *tinytex* \link{https://yihui.org/tinytex}{tal y como se describe aquí}, por si acaso incluimos aquí enlaces a las páginas de descarga de \link{https://miktex.org/download}{MikTeX} (para Windows) y \link{http://www.tug.org/mactex}{MacTeX} (para Mac).
- Como lector de documentos pdf puedes usar \link{https://get.adobe.com/es/reader/}{Adobe Reader}, aunque en Windows te recomendamos \link{https://www.sumatrapdfreader.org/free-pdf-reader.html}{Sumatra Pdf} y en Mac recomendamos *Vista Previa* o \link{https://skim-app.sourceforge.io/}{Skim}.
- En algún momento puede ser necesario usar un editor de texto. El que incluye RStudio sirve para tareas sencillas, pero en Windows recomendamos \link{https://notepad-plus-plus.org/}{Notepad++} y en Mac \link{https://www.barebones.com/products/bbedit/}{BBEdit}.
- Para abrir algunos ficheros de datos es conveniente disponer de una hoja de cálculo como Excel de Microsoft o, alternativamente, Calc (de \link{https://www.openoffice.org/es/}{Open Office} o de \link{https://es.libreoffice.org/}{Libre Office}). **Ten cuidado** si abres ficheros de datos (csv o txt) del curso con Excel: es fácil *romper* uno de esos ficheros inadvertidamente.
## Python
+ Vamos a usar R de forma casi exclusiva en esta asignatura, pero es obligado señalar que Python es también extremadamente popular en este momento y es el lenguaje predominante en campos como el Aprendizaje Profundo (*Deep Learning*). En particular veremos en clase ejemplos que ilustran la forma de combinar ambos lenguajes en nuestro trabajo para aprovechar lo mejor de ambos.
+ Si usas Mac o Linux ya tienes una instalación de Python en tu sistema. En Windows tienes que instalar una distribución de Python antes de usarla. **ATENCIÓN:** la instalación de Python es una fuente habitual de quebraderos de cabeza. Si dudas es *mucho mejor* que preguntes a tus profesores. En el Curso 0 tendrás una introducción a Python. Pero en cualquier caso es importante que te informes bien antes de hacer cambios que pueden *dañar tu instalación de Python gravemente*.
### WSL 2.
+ Si eres usuario de una versión reciente de Windows 10 te puede interesar conocer el \link{https://docs.microsoft.com/es-es/windows/wsl/}{Windows Subsystem for Linux} y usarlo para acceder a muchas de las herramientas de las que vamos a hablar. Y en particular puedes usarlo para disponer de un entorno de desarrollo en Python. Pregunta a tu profesor antes de empezar si te interesa este tema: la situación de WSL es muy fluida y a menudo se producen cambios sustanciales en esa herramienta.
# La interfaz de RStudio
## Primer Contacto
```{r echo=FALSE, comment=NULL, fig.align='center', out.width = "55%", purl=FALSE}
include_graphics(figpath("01-fig18-RStudio-Paneles.png"))
```
- Abre RStudio. Inicialmente verás que hay tres paneles principales, que vamos a ir conociendo:
1. Consola.
2. Historial / Entorno / Git.
3. Gráficos / Ficheros / Ayuda / Paquetes
---
- Para empezar, haz clic en la consola (el panel de la izquierda) en la línea con el prompt (símbolo `>`). Verás el cursor parpadeando.
Escribe `3^2` y pulsa $\text{\keys{\return}}$
![](./fig/01-fig03.png)
- El uno entre corchetes es la forma en la que R nos indica que esta es la primera línea de su respuesta. Enseguida veremos respuestas que ocupan varias líneas. Debajo hay un nuevo prompt listo para seguir trabajando.
## Ejercicio 1: R como una calculadora
- Copia o teclea cada línea en el prompt (¡practica las dos maneras!), una por una. Trata de adivinar el resultado de cada operación antes de ejecutar el código:.
```{r eval = FALSE, comment = NULL, echo=-1}
# Ejercicio 1
2 + 3
15 - 7
4 * 6
13/5
1/3 + 1/5
sqrt(25)
sqrt(26)
sin(pi)
sin(3.14)
```
## Comentarios sobre el Ejercicio 1
- Usa paréntesis para controlar mejor el orden de las operaciones.
- Los espacios a menudo son irrelevantes pero a veces son esenciales. Por ejemplo es igual escribir
\begin{center}
\verb!3 + 5!
\end{center}
que `3+5`. Usa espacios extra para ganar claridad. Pero **no escribas**
\begin{center}
\verb!sqrt (25)!
\end{center}
en lugar de `sqrt(25)`. Funciona pero ¡es feo y difícil de leer!
- `sin` es la función *seno* y `pi` se refiere a la constante matemática $\pi\approx 3.141593$. Enseguida hablaremos de otras funciones de R.
- R es un lenguaje **numérico** (no es *simbólico*). No hemos obtenido $0$ (que es la respuesta exacta), sino un valor aproximado muy pequeño (en notación científica):
```{r eval = FALSE, comment = NULL, purl=FALSE}
1.224606e-16
```
## Ejercicio 2: Errores.
- Prueba ahora a escribir esta expresión incompleta:
```{r eval = FALSE, comment = NULL, echo = -1, tidy = FALSE}
# Ejercicio 2
3 +
```
y pulsa $\text{\keys{\return}}$. La respuesta `+` es la forma que tiene R de decirnos *"necesito algo más"* (no tiene nada que ver con la suma). Lo mejor es que uses la tecla $\text{\keys{Esc}}$ y completes la expresión.
- Escribe y ejecuta una a una estas expresiones para ver distintos tipos de errores:
```{r eval = FALSE, comment = NULL, tidy = FALSE}
4/*3
2/0
sqrt(-4)
```
- Escribe y ejecuta
```{r error= TRUE}
Sqrt(4)
```
y verás que se produce un error. **Es muy importante recordar que R siempre distingue mayúsculas de minúsculas.**
## Detalles adicionales sobre RStudio.
```{r echo=FALSE, comment=NULL, fig.align='center', out.width = "45%", purl=FALSE}
include_graphics(figpath("01-fig18-RStudio-Paneles.png"))
```
- *Historial de comandos:* Cuando estás trabajando en la consola puedes pulsar la flecha $\text{\keys{\arrowkeyup}}$ repetidamente, e irás viendo pasar todos los comandos previos. Con $\text{\keys{\arrowkeydown}}$ recorres la lista en sentido contrario. Además en el panel `History` (arriba a la derecha) puedes ver esa lista y copiar/pegar los comandos o guardarlos como fichero de texto.
- *Limpieza de la consola:* Pulsa $\text{\keys{\ctrl + L}}$. Esto no afecta al historial de comandos.
- *Ayuda;* El panel `Help` (abajo a la derecha) nos servirá, cuando aprendamos más, para acceder al sistema de ayuda de R.
## Otras opciones de trabajo.
### RStudio Cloud
+ Los creadores de RStudio ponen a nuestra disposición una versión web gratuita de la aplicación, llamada \link{https://rstudio.cloud}{RStudio Cloud}, que puede ser muy útil. Aunque se accede a través del navegador la interfaz es muy similar e incluso los atajos de teclado coinciden mayoritariamente. Esta opción puede resultar especialmente útil cuando se combina con el uso de repositorios en GitHub; por ejemplo para trabajar desde una tablet como se está haciendo en la figura:
```{r echo=FALSE, comment=NULL, fig.align='center', out.width = "40%", purl=FALSE}
include_graphics(figpath("01-RStudioCloud.jpeg"))
```
+ Recomendamos crear una cuenta gratuita de RStudio Cloud para poder experimentar con la herramienta y para disponer de una forma de acceder a R en caso de necesidad. Haremos algunos experimentos con RStudio Cloud en las próximas sesiones del curso.
---
### Jupyter
+ En el trabajo con Python es frecuente utilizar como herramienta de desarrollo los \link{https://jupyter.org}{Jupyter Notebooks}. Los Notebooks son un tipo de documento que permite combinar código ejecutable con documentación (texto, figuras, ecuaciones, enlaces). El Notebook puede ejecutarse desde un navegador y los resultados de la ejecución del código se incorporan al propio documento. Aunque los Notebooks de Jupyter se usan habitualmente como una herramienta para código Python, también ofrecen soporte para R y otros lenguajes.
+ Se pueden instalar los Jupyter Notebooks en local como parte de una instalación estándar de Python (\link{https://xkcd.com/1987/}{si es que tal cosa existe}). Pero también existen opciones de acceso remoto a servidores Jupyter públicos y gratuitos (hay asimismo servidores de pago). En particular, si disponéis de una cuenta en Google os recomiendo \link{https://colab.research.google.com}{Google Colab }, que permite incluso acceder a GPUs para aplicaciones de Deep Learning. Además usando \link{https://colab.research.google.com/notebook\#create=true&language=r}{este enlace} podéis utilizar Google Colab para crear Notebooks del lenguaje R.
---
+ La figura muestra un Jupyter Notebook abierto en Google Colab.
```{r echo=FALSE, comment=NULL, fig.align='center', out.width = "60%", purl=FALSE}
include_graphics(figpath("01-JupyterGoogleColab.png"))
```
Fíjate en la combinación de texto, código y resultados de la ejecución del código (en este caso figuras). Este ejemplo forma parte del \link{https://colab.research.google.com/github/jakevdp/PythonDataScienceHandbook/blob/master/notebooks/Index.ipynb}{Python Data Science Handbook} de Jake VanderPlas, que está disponible gratuitamente en ese enlace.
# Variables y asignaciones en R.
## Variables
- Una *variable*, en R, es un símbolo que usamos para referirnos a un valor. Por ejemplo, sitúate en la Consola de Comandos y teclea
```{r eval = FALSE, comment = NULL, echo = -1}
# Variables y asignaciones
a <- 2
```
Ahora ejecuta esa instrucción. Aunque aparentemente no ha sucedido nada (porque no hay respuesta), a partir de ese momento R ha asignado el valor 2 al símbolo `a`. Fíjate en el panel superior derecho llamado *Environment* (*entorno*), en el que aparece el valor actual de la variable.
```{r echo=FALSE, comment=NULL, fig.align='center', out.width = "30%", purl=FALSE}
include_graphics(figpath("01-fig09-RStudio-EntornoValoresVariables.png"))
```
- Así que si, por ejemplo, tecleas y ejecutas:
```{r eval = FALSE, comment = NULL,}
a + 1
```
obtendrás como respuesta $3$. Comprueba en el panel de entorno que el valor de `a` no ha cambiado. ¿Qué sucede si ejecutas `a <- a + 1`? ¿Y si ejecutas `a <- A + 1`?
## Ejercicio 3. Operaciones, asignaciones y resultados.
- Ejecuta estos comandos, uno detrás de otro. Trata de imaginar el valor de las variables tras cada operación.
```{r results='hide', echo=-1, tidy = TRUE}
# Ejercicio 3
a <- 2
b <- 3
c <- a + b
a <- b * c
b <- (c - a)^2
c <- a * b
```
Consulta el panel de entorno para ver cuanto valen las variables tras cada operación.
- Una orden como `c <- a + b` en la que guardamos en una variable el resultado de una operación es una **asignación**. Por defecto R no muestra el resultado de las asignaciones al ejecutarlas. Si quieres ver el resultado encierra entre paréntesis *toda la asignación*
```{r comment=NULL}
(c <- a + b)
```
Como ves, ahora R sí muestra el resultado.
---
- Es recomendable usar nombres informativos para las variables y jugar con la tipografía para haceros más legibles, como `precio_final` o `poblacion1995`. Los nombres de variables no pueden empezar por un número ni contener caracteres especiales.
- Aunque puedes usar el igual `=` para asignaciones, es importante que sepas que en R se usa a menudo el símbolo ` <- ` para las asignaciones, de manera que
```{r eval = FALSE, comment = NULL, tidy = FALSE}
a = 2
```
es equivalente a
```{r eval = FALSE, comment = NULL,}
a <- 2
```
De hecho el uso de `=` para asignaciones \link{https://style.tidyverse.org/syntax.html\#assignment-1}{se desaconseja} en la comunidad de usuarios de R. En RStudio con Windows puedes usar el atajo de teclado $\text{\keys{Alt + \_}}$, mientras que en Mac usaremos $\text{\keys{\Alt + \_}}$. Si quieres leer algo más sobre esta discusión (bizantina), \link{https://stackoverflow.com/questions/1741820/what-are-the-differences-between-and-assignment-operators-in-r}{puedes hacerlo aquí}. En realidad este párrafo es una excusa para introducir enlaces a Stackoverflow, y a una guía de estilo del código de R.
## Haciendo limpieza antes de seguir adelante.
- Vamos a aprender a eliminar cualquier resto de nuestro trabajo anterior de la memoria de R. Esto es necesario a menudo cuando empezamos un nuevo análisis de datos, para evitar posibles errores debidos a la permanencia de esos resultados previos.
- Empieza usando el menú $\text{\menu[,]{Session, Restart R}}$. Verás aparecer el mensaje `Restarting R session...` en la Consola.
- Con esto no hemos acabado. Si miras el panel de entorno verás que esa operación no ha eliminado los valores asignados a variables. Para hacer que R olvide esos valores podemos usar el icono de una escoba que aparece encima de ese panel de entorno.
```{r echo=FALSE, comment=NULL, fig.align='center', out.width = "25%", purl=FALSE}
include_graphics(figpath("01-fig10-RStudio-EntornoLimpieza.png"))
```
Al pulsarlo aparecerá un mensaje de confirmación.
```{r echo=FALSE, comment=NULL, fig.align='center', out.width = "25%", purl=FALSE}
include_graphics(figpath("01-fig11-RStudio-EntornoLimpieza.png"))
```
Acepta haciendo clic en *Yes* y estaremos listos para seguir. Veremos más adelante formas alternativas de hacer esto.
# El editor de RStudio. Ficheros de comandos de R.
## Abriendo el editor
- El trabajo en la Consola de Comandos puede resultar conveniente para algunas operaciones básicas. Pero resulta incómodo para cualquier análisis de datos salvo los más triviales. Vamos a ver otra forma mejor de trabajar.
- Pulsa $\text{\keys{\ctrl + \shift + N}}$ (o, en un Mac, $\text{\keys{\cmd + \shift + N}}\,$ ). Alternativamente usa el menú $\text{\menu[,]{File, New File, R Script}}$. Verás aparecer un panel nuevo en la parte superior izquierda de la ventana, el *Editor* de RStudio.
```{r echo=FALSE, comment=NULL, fig.align='center', out.width = "55%", purl=FALSE}
include_graphics(figpath("01-InterfazRstudio-Editor.png"))
```
- El editor va a ser el escenario principal de nuestro trabajo con RStudio.
---
## Ejecutando código en el editor
- Empieza escribiendo esta asignación en el editor
```{r results='hide', purl=FALSE}
a <- 4
```
para obtener algo como
```{r echo=FALSE, comment=NULL, fig.align='center', out.width = "35%", purl=FALSE}
include_graphics(figpath("01-fig12-RStudio-Editor.png"))
```
Si ahora pulsas la tecla $\text{\keys{\return}}$ verás que ese código no se ejecuta (mira la consola y el entorno), simplemente pasas a la siguiente línea del editor. Para ejecutar el código vuelve a hacer clic en la línea `a <- 4` y ahora pulsa a la vez $\text{\keys{\ctrl + \return}}$. Veras que el código aparece copiado en la consola como si lo hubieras ejecutado allí.
## Ejecutando varios comandos a la vez.
- Para empezar a ver las ventajas de esta forma de trabajar, teclea en el editor dos líneas más de código:
```{r echo=FALSE, comment=NULL, fig.align='center', out.width = "35%", purl=FALSE}
include_graphics(figpath("01-fig13-RStudio-EditorVariosComandos.png"))
```
y ahora selecciona esas líneas (usando el ratón o el teclado). Asegúrate de que las tres líneas aparecen completamente seleccionadas, como se muestra aquí:
```{r echo=FALSE, comment=NULL, fig.align='center', out.width = "35%", purl=FALSE}
include_graphics(figpath("01-fig14-RStudio-EditorVariosComandos.png"))
```
- Si ahora usas a la vez $\text{\keys{\ctrl + \return}}$ podrás comprobar en la consola que las tres líneas de código se han ejecutado todas una tras otra.
## Ficheros de comandos de R. Directorio de trabajo.
- Vamos a aprender a guardar en un fichero de comandos (*script*) el trabajo que hacemos en el Editor de RStudio.
- Cada sesión de trabajo con R utiliza una carpeta de nuestro ordenador llamada *Working Directory (Directorio de Trabajo)* para almacenar datos, ficheros de comandos, etc. Es necesario que elijas un directorio de trabajo para este curso y que te acostumbres, al principio de cada sesión, a indicarle a R cuál es ese directorio.
- Dentro de tu carpeta de usuario crea una carpeta para los ficheros de esta asignatura (llámala por ejemplo FMAD o Fundamentos, aunque el nombre no es importante). Si tu nombre de usuario contiene acentos, espacios, la letra ñ, etc. y experimentas algún problema al usar R, habla con tu profesor. Finalmente dentro de esta crea una carpeta llamada `S0` para la sesión de hoy. La figura de la siguiente página ilustra la estructura de carpetas que vamos a usar en la asignatura.
- Ahora usa el menú $\text{\menu[,]{Session, Set Working Directory, Choose Directory}}$:
```{r echo=FALSE, comment=NULL, fig.align='center', out.width = "30%", purl=FALSE}
include_graphics(figpath("01-fig15-RStudio-ElegirWorkDir.png"))
```
## Estructura de carpetas. {#estructura_carpetas}
```{r echo=FALSE, comment=NULL, fig.align='center', out.width = "70%", purl=FALSE}
include_graphics(figpath("01-fig19-EstructuraCarpetasAsignatura.png"))
```
---
- A continuación usa el menú $\text{\menu[,]{File, Save As}}$ y guarda el fichero de instrucciones de R con el nombre `sesion01-00` en el directorio de trabajo. Al guardarlo RStudio le añadirá la extensión `.R`, que identifica a los ficheros de comandos de R.
- Es recomendable que uses el *Explorador de Archivos* de Windows (o el *Finder* de Mac, etc.) para navegar a la carpeta en la que has guardado ese fichero y lo abras con un *editor de texto* (como el Bloc de Notas). Habla con tu profesor si tienes dudas de como hacer esto. Comprueba que se trata de un fichero de texto que contiene simplemente los comandos que hemos escrito en el Editor de RStudio.
- También puedes abrir un fichero de comandos escrito por otra persona. De hecho en el curso vamos a usar a menudo ficheros de comandos prediseñados para dirigir nuestro trabajo. Empieza descargando este fichero de comandos [\textcolor{blue}{{sesion01-01.R}}](https://raw.githubusercontent.com/mbdfmad/fmad2122/master/scripts/sesion01-01.R) y guárdalo en tu directorio de trabajo. En la próxima sección lo abriremos y usaremos para seguir avanzando con R. **IMPORTANTE:** para llevar a cabo la descarga lee la siguiente página.
## Instrucciones de descarga de ficheros.
+ \textcolor{red}{\large IMPORTANTE:} En muchas ocasiones te vamos a pedir que descargues ficheros de datos, código, etc. Dependiendo del navegador, sistema operativo y servidor que aloje esos ficheros, la descarga puede presentar problemas que complicarán nuestro trabajo. Para evitarlos vamos a usar una serie de comandos de R que te servirán con cualquiera de esos ficheros simplemente **copiando su enlace de descarga dentro de las comillas de la variable `file_url` y ejecutando estos comandos**.
\scriptsize
```{r eval=FALSE, comment=NULL, purl=FALSE}
# Comprobamos el directorio de trabajo
getwd()
# Datos del fichero. La url, incluyendo el nombre del fichero.
file_url <- ""
# Cambia la siguiente fila si quieres usar una subcarpeta del wd.
local_folder <- "./"
# No cambies nada a partir de aquí
file_name <- tail(unlist(strsplit(file_url, split = "/")), 1)
localFile <- paste0(local_folder, file_name)
if(!file.exists(localFile)){
download.file(url = file_url, destfile = localFile)
} else {
warning(paste0("Cuidado: el fichero de datos", localFile, " ya existe."))
}
```
\normalsize
+ Te recomiendo que abras un nuevo script de R y que copies estos comandos en ese script. Llámalo `herramientas.R` o algo parecido y guárdalo en la carpeta de la asignatura, donde puedas localizarlo fácilmente. Si lo dejas abierto en la primera pestaña del editor de RStudio siempre podrás volver a usar estos comandos fácilmente.
# Estructuras de datos básicas en R.
## Vectores.
- Ahora usa el Menú $\text{\menu[,]{File, Open File}}$ y abre el fichero `sesion01-01.R` que acabas de descargar. Se abrirá en el Editor.
```{r echo=FALSE, comment=NULL, fig.align='center', out.width = "60%", purl=FALSE}
include_graphics(figpath("01-fig17-RStudio-PrimerScriptAbierto.png"))
```
Si tienes problemas con los acentos al abrir el fichero usa el menú $\text{\menu[,]{File, Reopen with Encoding}}$ y si los problemas persisten pregunta a tu profesor. Nosotros usamos (y recomendamos) UTF-8 como encoding por defecto en todos los ficheros.
- Fíjate en que R usa el símbolo `#` para introducir comentarios en un fichero de comandos e ignorará el resto de la línea a partir del `#`. Vamos a usar los comentarios de ese fichero como guía para aprender las propiedades más básicas de los vectores en R. Volveremos aquí después de recorrerlo.
## Tablas (Data Frames)
- Junto con los vectores, las tablas y listas constituyen las estructuras de datos básicos de R. Vamos a ver ahora el primero de estos dos tipos de estructuras. En el sistema base de R se denominan `data.frames`. Las tablas de datos son muchas veces el punto de partida de nuestros análisis. Pronto aprenderemos a abrir tablas almacenadas en ficheros externos de datos y a usar funciones relacionadas del tidyverse. Pero para empezar vamos a usar una tabla de datos de ejemplo que R trae incorporada al instalarlo.
- Ejecuta este código:
```{r size="small", echo=-1}
# Tablas (Data Frames)
head(iris)
```
- La tabla contiene datos sobre 150 flores de 3 especies de iris. La función `head` hace que R solo nos muestre el encabezamiento y las primeras 6 filas de la tabla (con `tail` verías las 6 últimas). Prueba a ejecutar `head(iris, 12)`.
- Si ejecutas `View(iris)` la tabla completa se abrirá en otra pestaña del editor.
---
- Fíjate en la tabla
```{r, echo = FALSE, purl=FALSE}
head(iris)
```
y observa que:
- cada columna corresponde a una *variable* (una propiedad observable). Todos los elementos de una columna son del mismo tipo (homogéneos).
- cada fila corresponde a una *observación* o *individuo* (una flor en este ejemplo). Los elementos de una misma fila pueden ser de tipos distintos (heterogéneos).
- Podemos obtener las dimensiones (número de filas y columnas) de la tabla con
```{r}
dim(iris)
```
También podemos obtener los números de filas y columnas directamente con `nrow` y `ncol`. ¡Compruébalo!
## Selección de elementos de una tabla
- Para acceder al elemento en la fila 2, columna 3 podemos usar la notación de corchetes:
```{r echo=-1}
# Selección de elementos de una tabla
iris[2, 3]
```
Ese acceso permite cambiar los elementos de la tabla directamente:
```{r}
iris[2, 3] <- 7
head(iris)
```
## Selección de filas y columnas de una tabla
- Puesto que las columnas están formadas por elementos homogéneos podemos extraer una columna y obtenemos un vector de R. Hay dos formas de hacer esto:
1. usando la notación de corchetes con el número de columna y dejando el número de fila en blanco (solo se muestra el principio de la columna).
```{r eval = FALSE, comment = NULL, purl=FALSE}
iris[ , 3]
```
```{r echo=FALSE}
head(iris[ , 3], 38)
```
2. Usando el nombre de la columna y el símbolo `$` así:
```{r eval = FALSE, comment = NULL,}
iris$Petal.Length
```
```{r echo=FALSE}
head(iris$Petal.Length, 38)
```
Esta segunda opción es preferible cuando es cómoda. Veremos formas de hacer esto con `dplyr` más adelante.
---
- Para seleccionar una fila podemos usar corchetes, pero al ser heterogénea el resultado es una nueva tabla:
```{r}
iris[2, ]
```
- También podemos seleccionar más de una fila o columna. Aquí vamos a seleccionar las filas de la 49 a la 52 y las columnas 1, 3 y 5:
```{r}
iris[49:52, c(1, 3, 5)]
```
---
- Al igual que con los vectores también podemos seleccionar elementos de una tabla usando condiciones lógicas (típicamente comparaciones). Por ejemplo, para seleccionar las filas que corresponden a flores con longitud de sépalo mayor que 2 usamos:
```{r eval = FALSE, comment = NULL,}
iris[iris$Sepal.Width > 2, ]
```
```{r echo=FALSE}
head(iris[iris$Sepal.Width > 2, ])
```
(sólo se muestran las primeras líneas del resultado). Fíjate en que hemos dejado en blanco el número de columna después de la coma para seleccionar todas las columnas. También podríamos haber combinado una condición sobre las filas con otra para seleccionar columnas.
# Librerías de R
## Instalación y carga de librerías
- La instalación básica de R contiene muchas herramientas pero hay además miles de librerías adicionales disponibles, muchas de ellas muy especializadas para temas concretos (por ejemplo *Caret* para Machine Learning, *BioConductor* para Bioinformática). Nosotros vamos a utilizar mucho una librería de herramientas llamada `tidyverse` de H. Wickham.
- Para usar una librería de R debemos instalarla (una única vez) y cargarla (en cada sesión en la que vayamos a usarla). Para instalar una librería sigue los pasos que aparecen en la figura;
```{r echo=FALSE, comment=NULL, fig.align='center', out.width = "35%", purl=FALSE}
include_graphics(figpath("01-fig16-RStudio-InstalarLibreria.png"))
```
R descargará e instalará la librería. Si tienes problemas, pide ayuda al profesor. Y por si sirve de ayuda aquí tienes un \link{https://youtu.be/HVyd-WAtIbQ}{vídeo ilustrando el proceso}.
---
- Cuando la instalación concluya puedes cargar la librería para usarla ejecutando
```{r message=FALSE, echo = -1}
# Instalación y carga de librerías
library(tidyverse)
```
- **Ejercicio** Además de la anterior instala las librerías llamadas `gapminder` y `nycflights13`.
```{r echo=FALSE, eval = FALSE, comment = NULL, purl=FALSE}
library(nycflights13)
View(flights)
```
Carga la segunda de estas librerías con
```{r}
library(nycflights13)
```
Esta librería contiene datos de todos los vuelos que despegaron de aeropuertos de Nueva York en 2013.
- **Ejercicio** ¿Cuántas filas y columnas tiene la tabla? ¿Cuántos vuelos despegaron del aeropuerto JFK? Indicación: usa la función `str` para empezar. **¡¡Es una de las funciones esenciales de R!!**
```{r echo=FALSE, eval = FALSE, comment = NULL, purl=FALSE}
library(nycflights13)
str(flights)
library(tidyverse)
ggplot(data = flights) +
geom_boxplot(mapping = aes(origin, distance, color = origin))
```
## Un primer encuentro con dplyr
- La librería `dplyr` es uno de los componentes básicos del *tidyverse* y permite simplificar mucho nuestro trabajo con tablas como la que acabamos de examinar. En concreto `dplyr` proporciona un conjunto de funciones que incluye entre otras:
- `filter`: para seleccionar algunas filas según sus valores.
- `arrange`: para reordenar las filas.
- `select`: para seleccionar columnas (variables)
- `mutate`: para añadir nuevas columnas calculadas a partir de las existentes.
- `summarize`: para obtener estimadores estadísticos, por ejemplo medias.
- Además con `dplyr` vamos a empezar a usar el operador `pipe`, que en R es `%>%`. Este operador pasa el resultado de una operación como primer argumento de la siguiente. El uso de `%>%` normalmente resulta más claro que la sintaxis básica de R.
- Por ejemplo usando `iris` vamos a buscar, en las columnas que se refieren a pétalos, cuáles son las flores con anchura de pétalo mayor que 2.3.
```{r message=FALSE, size="scriptsize", echo = -1}
# Un primer encuentro con dplyr
iris %>%
select(c('Petal.Length', 'Petal.Width')) %>%
filter(Petal.Width > 2.3)
```
## Y un primer encuentro con ggplot
- La librería `gapminder` que hemos instalado antes contiene una tabla de datos con algunas características socioeconómicas de casi todos los países del mundo a lo largo de varios lustros (proceden de [\textcolor{blue}{{www.gapminder.org}}](https://www.gapminder.org)). Carga la tabla y examínala con
```{r eval = FALSE, comment = NULL, purl = FALSE}
library(gapminder)
View(gapminder)
```
- La librería `ggplot` es otro de los componentes del tidyverse y proporciona herramientas para construir gráficas muy útiles. Su uso puede resultar un poco complejo al principio, pero pronto te acostumbraras. La plantilla básica de un gráfico con ggplot es
```{r eval = FALSE, comment = NULL, purl = FALSE, tidy=FALSE}
ggplot(data = <DATA>) +
<GEOM_FUNCTION>(mapping = aes(<MAPPINGS>))
```
Vamos a usar dplyr y ggplot para dibujar un gráfico de la relación entre esperanza de vida y renta per cápita para el año 2007.
---
- Los colores corresponden a los distintos continentes y el tamaño de cada punto indica la población del país. La escala vertical (renta per cápita) es logarítmica de base 10. El código es:
```{r comment=NULL, fig.align='center', out.width = "45%", size="scriptsize", echo = -(1:2)}
# Y un primer encuentro con ggplot
library(gapminder)
gapminder %>%
filter(year == 2007) %>%
ggplot() +
geom_point(mapping = aes(x = lifeExp, log(gdpPercap, 10),
color = continent, size = pop)) +
scale_size(range = c(.1, 24), name="Population (M)")
```
¿Qué preguntas te haces a la vista de este gráfico?
# Rmarkdown para la creación de documentos
## Introducción
+ En este curso vamos a iniciarnos en el manejo de Rmarkdown y, progresivamente, lo usaremos cada vez más. El objetivo es que el trabajo personal y el examen de la asignatura se realicen en este formato.
+ Rmarkdown, creado por Yihui Xie, es una herramienta muy general para la creación de documentos, en especial documentos relacionados con el Análisis de Datos. A partir de los ficheros escritos con Rmarkdown se pueden obtener fácilmente salidas en formato pdf o HTML, pero también presentaciones, artículos e informes técnicos, entradas de blog, libros, dashboards con Shiny y la lista sigue creciendo. Aprovecharemos las secciones finales de nuestras sesiones para presentar algunas de estas posibilidades.
+ Recomendamos empezar leyendo una \link{http://www.unavarra.es/personal/tgoicoa/ESTADISTICA_RMarkdown_tomas/basicRmarkdown/index.html}{introducción básica a RMarkdon} de T. Goicoa (Univ. Pública de Navarra).
+ Hay dos fuentes de información online básicas para adentrarse en las posibilidades de RMarkdown:
+ Del propio Yihui Xie: \link{https://bookdown.org/yihui/rmarkdown/}{R Markdown: The Definitive Guide.}
+ De RStudio: \link{https://rmarkdown.rstudio.com/lesson-1.html}{R Markdown: Get Started.}
---
## ¿Qué es un documento RMarkdown?
+ Un **documento Rmarkdown** es un fichero de texto con extensión *.Rmd* que contiene una mezcla de texto, comandos de formato (secciones, listas, negritas) y para inclusión de figuras, enlaces, etc. En particular se pueden usar comandos \LaTeX para crear ecuaciones.
+ Pero además, y de forma característica, el fichero contiene bloques (en inglés, *chunks*) con **comandos de código R**. Esos comandos de código R se evalúan como parte del procesado del documento para crear *documentos dinámicos*, similares a los notebooks de Jupyter, pero aún más flexibles.
+ Usaremos como ejemplo un fichero Rmarkdown sencillo, llamado \link{./rmarkdownDemo.Rmd}{rmarkdownDemo.Rmd} disponible en el repositorio. A partir de ese documento Rmd obtendremos salidas en formatos pdf, HTML y docx (MS Word). En todas estas opciones de salida se mantienen los formatos de texto, ecuaciones, figuras, enlaces y, por supuesto, el resultado del código en R.
---
## Otros formatos y capacidades.
+ Los tres formatos de salida ilustran las capacidades más básicas de Rmarkdown. Por ejemplo, se puede utilizar Rmarkdown para:
- Crear **presentaciones** en Beamer y otros formatos. Por ejemplo las presentaciones de este curso se han escrito íntegramente en Rmarkdown.
- Escribir **artículos científicos** y libros (con \link{https://bookdown.org/yihui/bookdown/}{bookdown}).
- Mantener sitios Web y \link{https://www.fernandosansegundo.com}{blogs}, usando \link{https://bookdown.org/yihui/blogdown/}{blogdown}.
- Crear **dashboards** con Shiny para visualizaciones interactivas. Lo mejor es ver los ejemplos de la \link{https://shiny.rstudio.com/gallery/}{galería}.
+ Además los bloques de código no se limitan a R. Se puede usar **otros lenguajes**, entre otros, R, Python y SQL. El soporte para Python en particular es muy bueno como veremos más adelante.
# Introducción al uso de GitHub para el curso
## Git y GitHub
+ El material de las sesiones del curso está alojado en un \link{https://github.com/mbdfmad/fmad2122}{repositorio en GitHub}.
+ Si no estás familiarizado con Git, el curso 0 te proporcionará una introducción y vamos a aprovechar esta asignatura para practicar el uso de una herramienta tan importante. Nuestro recurso favorito para aprender a combinar el uso de R y Git es el libro/web \link{https://happygitwithr.com}{Happy Git and GitHub for the useR}. En la primera sesión de prácticas daremos más detalles de la forma en la que vamos a usar Git en este curso, pero para ir adelantando trabajo puedes leer las primeras siete secciones de *Happy Git*. No te llevará demasiado tiempo. En esas secciones se presenta Git y se describe el proceso básico de instalación del software necesario. **Te recomendamos encarecidamente** que primero leas esas siete secciones sin instalar ni hacer nada en tu ordenador, luego vuelvas aquí, termines de leer esta sección y **entonces** empieces a instalar cosas, crear cuentas, etc.
+ Como complemento, puedes ver los vídeos 14 y 15 de esta \link{https://www.youtube.com/watch?v=3hqGcRoEYUY&list=PLmTpraKlPXDSPbP2L8MYZoweGSzi9gNTr}{playlist} del curso Data Science Toolbox de la Universidad John Hopkins para Coursera. También puedes encontrar información en este \link{https://lab.github.com/githubtraining/introduction-to-github}{curso de Introducción a GitHub}. Pregunta a tu profesor si necesitas más ayuda para empezar.
## Preparación para el curso
1. Crea una cuenta en \link{https://github.com/join}{GitHub} (es gratuito). **IMPORTANTE:** aunque ya tengas una cuenta en GitHub, para esta debes utilizar tu dirección de correo electrónico de la universidad. Si ya tienes una cuenta y tienes dudas sobre cómo proceder ¡consulta a tu profesor antes de estropear algo!
2. **Lee el siguiente enlace antes de elegir un nombre de usuario**.
\link{https://happygitwithr.com/github-acct.html\#username-advice}{Happy Git: username-advice}
Es imprescindible que envíes a tu profesor el nombre de usuario que hayas elegido lo antes posible.
3. Instala Git en tu ordenador si aún no lo has hecho. Sigue las instrucciones de \link{https://happygitwithr.com/install-git.html\#install-git}{este enlace}.
4. Instala las librerías `usethis` y `gitcreds` de R.
5. Ve al \link{https://github.com/mbdfmad/fmad2122}{repositorio de la asignatura en GitHub}. Asegúrate de que estás registrado con el usuario que has creado (usa el botón *Sign in* en la esquina superior derecha de la página si no es así).
6. Usa el botón verde
$\includegraphics[width=0.7cm]{fig/01-fig21-boton_code_GitHub.png}$ y en la ventana que aparece copia la URL del repositorio haciendo clic en el símbolo del portapapeles.
---
7. En RStudio usa el menú $\text{\menu[,]{File, New Project}}$ y en la ventana que aparece selecciona *Version Control*. A continuación selecciona *Git* y en el primer campo copia la URL en GitHub del paso anterior. Acepta *fmad2122* como nombre del repositorio y, **muy importante**, con el botón *browse* selecciona la ubicación del clon local del repositorio. Deberías situarlo dentro de tu carpeta de la asignatura; la que hemos llamado FMAD en esta figura:
```{r echo=FALSE, comment=NULL, fig.align='center', out.width = "30%", purl=FALSE}
include_graphics(figpath("01-fig19-EstructuraCarpetasAsignatura.png"))
```
Por ejemplo en Windows una ubicación típica podría ser algo como:
\scriptsize
```{r eval=FALSE}
C:/Users/tu_nombre/.../MasterBD/FMAD/
```
\normalsize mientras que en Mac sería algo como: \scriptsize
```{r eval=FALSE}
/Users/tu_nombre/.../MasterBD/FMAD/
```
\normalsize En ambos casos los puntos se refieren a subcarpetas intermedias que puedas querer usar (como OneDrive, Dropbox o cualquier otra).
## Manteniendo la copia local actualizada
+ Aunque Git permite mantener sincronizada tu copia con los cambios que se vayan produciendo en el repositorio de la asignatura, si te has acostumbrado al funcionamiento de soluciones como Dropbox, OneDrive, iCloud y otras similares, al principio te costará un poco de trabajo comprender que **en Git la sincronización no es automática.** Es razonable que sea así puesto que se trata de un sistema pensado para el control de versiones en el desarrollo de software: nadie quiere que los cambios en ese tipo de trabajo sean *demasiado automáticos*, eso causaría muchos más problemas de los que solucionaría.
+ Por eso, cuando los profesores del curso hagan cambios en el repositorio *fmad2122* deberás pedir explícitamente a Git que sincronice esos cambios con tu copia local. La forma más sencilla de hacer esto desde RStudio es abrir el proyecto asociado a ese repositorio y en el panel Git usar el botón `pull`. A lo largo del curso te recordaremos varias veces la necesidad de hacer esto con regularidad hasta que lo conviertas en una acto reflejo cada vez que empieces el trabajo.
## Referencias para la sesión
**Enlaces**
```{r eval = FALSE, comment = NULL, echo=FALSE, purl=FALSE, message=FALSE, error=FALSE}
sessionName <- "sesion01"
RmdName <- paste0(sessionName,".Rmd")
ScriptName <- paste0(sessionName,"-comandos.R")
lnkScriptGitHub <- paste0("https://raw.githubusercontent.com/mbdfmad/fmad2122/master/scripts/", ScriptName)
knitr::purl(RmdName, output = paste0("./scripts/", ScriptName), documentation = 0)
```
Junto con el material alojado en Moodle tenéis a vuestra disposición estos recursos:
- \link{https://raw.githubusercontent.com/mbdfmad/fmad2122/master/scripts/sesion01-comandos.R}{Código de esta sesión}
- [\textcolor{blue}{{R for Data Science (Wickham).}}](https://r4ds.had.co.nz/)
- [\textcolor{blue}{{Repositorio del curso}}](https://github.com/mbdfmad/fmad2122) en GitHub.
- \link{https://bookdown.org/yihui/rmarkdown/}{R Markdown: The Definitive Guide (Yihui Xie).}
- \link{https://happygitwithr.com}{Happy Git and GitHub for the useR (Jenny Bryan)}
- Web del libro [\textcolor{blue}{{PostData}}](http://www.postdata-statistics.com).
- [\textcolor{blue}{{Resumen de uso de dplyr}}](https://github.com/rstudio/cheatsheets/raw/master/data-transformation.pdf) elaborado por RStudio.
**Bibliografía**