Clase 1: Programación y gestión de datos
Introducción a R
Agenda
¿Qué es un lenguaje de programación?
¿Qué tipo de funciones y variables se usarán para
crear un video-juego como Super Mario Odyssey?
¿Por qué usar un lenguaje de programación?
¿Qué es R?
Un lenguaje de programación diseñado para el análisis de datos, computación estadística y visualización.
¿Por qué usar R?
Varias alternativas: SAS, Stata, SPSS, Excel, MATLAB, Minitab, Python, etc.
Pero:
Grandes y pequeñas compañías usan R: Ripley, Cencosud, Facebook, Google, Twitter, Bank of America, Ford Motor Company, John Deere, New York Times, Orbitz, Nordstrom, OkCupid, etc.
RStudio Cloud
IDE (Integrated development environment): entorno para el desarrollo en R.
Introducción a R
Instrucciones en R
Las instrucciones se pueden ejecutar desde la consola o a través de un archivo.
Las instrucciones se denomina expresiones.
Las expresiones se ejecutan con “Enter”.
Notar que la primera instrucción no tiene una salida, mientras que la segunda sí (indicada por [1])
Tipos de datos simples
Variables
El nombre asignado a un objeto debe empezar con una letra. Puede incluir cualquier combinación de letras mayúsculas, minúsculas, números y puntos.
Tipos de datos
�a <- “Hola mundo.”
b <- 37.5
class(a)
Variables
El nombre asignado a un objeto debe empezar con una letra. Puede incluir cualquier combinación de letras mayúsculas, minúsculas, números y puntos.��Los objetos obtenidos se pueden usar como parte de una nueva expresión.��Ejemplo:�����
Introducción a Tidyverse
Tidyverse - Librerías / Paquetes de R
Tidyverse y el pensar a "cocinar"
Ejemplo
¿Cúal es la receta?
La receta en el tidyverse
Tibble: El Data Frame que se usa en Tidyverse.
| Nombre | Edad | Altura | Sexo | Nacionalidad | Inscrito |
079 | Danielle | 23 | 1.71 | F | Argentina | True |
054 | Claudia | 28 | 1.65 | F | Uruguay | True |
066 | Marcos | 18 | 1.80 | M | Chile | False |
178 | Rodolfo | 33 | 1.54 | M | Chile | True |
099 | Rolando | 21 | 1.70 | M | EEUU | True |
007 | Florencia | 19 | 1.69 | F | Uruguay | False |
254 | Pablo | 54 | 2.01 | M | Argentina | False |
121 | Mauricio | 40 | 1.91 | M | Chile | True |
101 | Christian | 20 | 1.85 | M | Argentina | True |
068 | Salvador | 33 | 1.62 | M | Chile | True |
707 | Rodolfo | 46 | 1.66 | M | Uruguay | True |
| Nombre | Edad | Altura | Sexo | Nacionalidad | Inscrito |
079 | Danielle | 23 | 1.71 | F | Argentina | True |
054 | Claudia | 28 | 1.65 | F | Uruguay | True |
066 | Marcos | 18 | 1.80 | M | Chile | False |
178 | Rodolfo | 33 | 1.54 | M | Chile | True |
099 | Rolando | 21 | 1.70 | M | EEUU | True |
007 | Florencia | 19 | 1.69 | F | Uruguay | False |
254 | Pablo | 54 | 2.01 | M | Argentina | False |
121 | Mauricio | 40 | 1.91 | M | Chile | True |
101 | Christian | 20 | 1.85 | M | Argentina | True |
068 | Salvador | 33 | 1.62 | M | Chile | True |
707 | Rodolfo | 46 | 1.66 | M | Uruguay | True |
Nombre de las variables
| Nombre | Edad | Altura | Sexo | Nacionalidad | Inscrito |
079 | Danielle | 23 | 1.71 | F | Argentina | True |
054 | Claudia | 28 | 1.65 | F | Uruguay | True |
066 | Marcos | 18 | 1.80 | M | Chile | False |
178 | Rodolfo | 33 | 1.54 | M | Chile | True |
099 | Rolando | 21 | 1.70 | M | EEUU | True |
007 | Florencia | 19 | 1.69 | F | Uruguay | False |
254 | Pablo | 54 | 2.01 | M | Argentina | False |
121 | Mauricio | 40 | 1.91 | M | Chile | True |
101 | Christian | 20 | 1.85 | M | Argentina | True |
068 | Salvador | 33 | 1.62 | M | Chile | True |
707 | Rodolfo | 46 | 1.66 | M | Uruguay | True |
Nombre de índices
| Nombre | Edad | Altura | Sexo | Nacionalidad | Inscrito |
079 | Danielle | 23 | 1.71 | F | Argentina | True |
054 | Claudia | 28 | 1.65 | F | Uruguay | True |
066 | Marcos | 18 | 1.80 | M | Chile | False |
178 | Rodolfo | 33 | 1.54 | M | Chile | True |
099 | Rolando | 21 | 1.70 | M | EEUU | True |
007 | Florencia | 19 | 1.69 | F | Uruguay | False |
254 | Pablo | 54 | 2.01 | M | Argentina | False |
121 | Mauricio | 40 | 1.91 | M | Chile | True |
101 | Christian | 20 | 1.85 | M | Argentina | True |
068 | Salvador | 33 | 1.62 | M | Chile | True |
707 | Rodolfo | 46 | 1.66 | M | Uruguay | True |
Columna / Variable
| Nombre | Edad | Altura | Sexo | Nacionalidad | Inscrito |
079 | Danielle | 23 | 1.71 | F | Argentina | True |
054 | Claudia | 28 | 1.65 | F | Uruguay | True |
066 | Marcos | 18 | 1.80 | M | Chile | False |
178 | Rodolfo | 33 | 1.54 | M | Chile | True |
099 | Rolando | 21 | 1.70 | M | EEUU | True |
007 | Florencia | 19 | 1.69 | F | Uruguay | False |
254 | Pablo | 54 | 2.01 | M | Argentina | False |
121 | Mauricio | 40 | 1.91 | M | Chile | True |
101 | Christian | 20 | 1.85 | M | Argentina | True |
068 | Salvador | 33 | 1.62 | M | Chile | True |
707 | Rodolfo | 46 | 1.66 | M | Uruguay | True |
Tipo de variable asociada a cada columna
character
character
character
integer
numeric
logical
| Nombre | Edad | Altura | Sexo | Nacionalidad | Inscrito |
079 | Danielle | 23 | 1.71 | F | Argentina | True |
054 | Claudia | 28 | 1.65 | F | Uruguay | True |
066 | Marcos | 18 | 1.80 | M | Chile | False |
178 | Rodolfo | 33 | 1.54 | M | Chile | True |
099 | Rolando | 21 | 1.70 | M | EEUU | True |
007 | Florencia | 19 | 1.69 | F | Uruguay | False |
254 | Pablo | 54 | 2.01 | M | Argentina | False |
121 | Mauricio | 40 | 1.91 | M | Chile | True |
101 | Christian | 20 | 1.85 | M | Argentina | True |
068 | Salvador | 33 | 1.62 | M | Chile | True |
707 | Rodolfo | 46 | 1.66 | M | Uruguay | True |
Fila / Observación
Introducción a dplyr
Dplyr - Gramática para manipulación de Data Frames
filter()
| Nombre | Edad | Altura | Sexo | Nacionalidad | Inscrito |
079 | Danielle | 23 | 1.71 | F | Argentina | True |
054 | Claudia | 28 | 1.65 | F | Uruguay | True |
066 | Marcos | 18 | 1.80 | M | Chile | False |
178 | Rodolfo | 33 | 1.54 | M | Chile | True |
099 | Rolando | 21 | 1.70 | M | EEUU | True |
007 | Florencia | 19 | 1.69 | F | Uruguay | False |
254 | Pablo | 54 | 2.01 | M | Argentina | False |
121 | Mauricio | 40 | 1.91 | M | Chile | True |
101 | Christian | 20 | 1.85 | M | Argentina | True |
068 | Salvador | 33 | 1.62 | M | Chile | True |
707 | Rodolfo | 46 | 1.66 | M | Uruguay | True |
Ejemplo: Filtremos las observaciones en que Sexo es igual a ‘M’.
| Nombre | Edad | Altura | Sexo | Nacionalidad | Inscrito |
079 | Danielle | 23 | 1.71 | F | Argentina | True |
054 | Claudia | 28 | 1.65 | F | Uruguay | True |
066 | Marcos | 18 | 1.80 | M | Chile | False |
178 | Rodolfo | 33 | 1.54 | M | Chile | True |
099 | Rolando | 21 | 1.70 | M | EEUU | True |
007 | Florencia | 19 | 1.69 | F | Uruguay | False |
254 | Pablo | 54 | 2.01 | M | Argentina | False |
121 | Mauricio | 40 | 1.91 | M | Chile | True |
101 | Christian | 20 | 1.85 | M | Argentina | True |
068 | Salvador | 33 | 1.62 | M | Chile | True |
707 | Rodolfo | 46 | 1.66 | M | Uruguay | True |
| Nombre | Edad | Altura | Sexo | Nacionalidad | Inscrito |
066 | Marcos | 18 | 1.80 | M | Chile | False |
178 | Rodolfo | 33 | 1.54 | M | Chile | True |
099 | Rolando | 21 | 1.70 | M | EEUU | True |
254 | Pablo | 54 | 2.01 | M | Argentina | False |
121 | Mauricio | 40 | 1.91 | M | Chile | True |
101 | Christian | 20 | 1.85 | M | Argentina | True |
068 | Salvador | 33 | 1.62 | M | Chile | True |
707 | Rodolfo | 46 | 1.66 | M | Uruguay | True |
Al aplicar un filtro con este criterio obtenemos otro Data Frame con menos observaciones.
select()
| Nombre | Edad | Altura | Sexo | Nacionalidad | Inscrito |
079 | Danielle | 23 | 1.71 | F | Argentina | True |
054 | Claudia | 28 | 1.65 | F | Uruguay | True |
066 | Marcos | 18 | 1.80 | M | Chile | False |
178 | Rodolfo | 33 | 1.54 | M | Chile | True |
099 | Rolando | 21 | 1.70 | M | EEUU | True |
007 | Florencia | 19 | 1.69 | F | Uruguay | False |
254 | Pablo | 54 | 2.01 | M | Argentina | False |
121 | Mauricio | 40 | 1.91 | M | Chile | True |
101 | Christian | 20 | 1.85 | M | Argentina | True |
068 | Salvador | 33 | 1.62 | M | Chile | True |
707 | Rodolfo | 46 | 1.66 | M | Uruguay | True |
Ejemplo: Filtremos las columnas Nombre y Nacionalidad.
| Nombre | Edad | Altura | Sexo | Nacionalidad | Inscrito |
079 | Danielle | 23 | 1.71 | F | Argentina | True |
054 | Claudia | 28 | 1.65 | F | Uruguay | True |
066 | Marcos | 18 | 1.80 | M | Chile | False |
178 | Rodolfo | 33 | 1.54 | M | Chile | True |
099 | Rolando | 21 | 1.70 | M | EEUU | True |
007 | Florencia | 19 | 1.69 | F | Uruguay | False |
254 | Pablo | 54 | 2.01 | M | Argentina | False |
121 | Mauricio | 40 | 1.91 | M | Chile | True |
101 | Christian | 20 | 1.85 | M | Argentina | True |
068 | Salvador | 33 | 1.62 | M | Chile | True |
707 | Rodolfo | 46 | 1.66 | M | Uruguay | True |
| Nombre | Nacionalidad |
079 | Danielle | Argentina |
054 | Claudia | Uruguay |
066 | Marcos | Chile |
178 | Rodolfo | Chile |
099 | Rolando | EEUU |
007 | Florencia | Uruguay |
254 | Pablo | Argentina |
121 | Mauricio | Chile |
101 | Christian | Argentina |
068 | Salvador | Chile |
707 | Rodolfo | Uruguay |
Al aplicar select obtenemos otro Data Frame con menos variables.
arrange()
| Nombre | Edad | Altura | Sexo | Nacionalidad | Inscrito |
079 | Danielle | 23 | 1.71 | F | Argentina | True |
054 | Claudia | 28 | 1.65 | F | Uruguay | True |
066 | Marcos | 18 | 1.80 | M | Chile | False |
178 | Rodolfo | 33 | 1.54 | M | Chile | True |
099 | Rolando | 21 | 1.70 | M | EEUU | True |
007 | Florencia | 19 | 1.69 | F | Uruguay | False |
254 | Pablo | 54 | 2.01 | M | Argentina | False |
121 | Mauricio | 40 | 1.91 | M | Chile | True |
101 | Christian | 20 | 1.85 | M | Argentina | True |
068 | Salvador | 33 | 1.62 | M | Chile | True |
707 | Rodolfo | 46 | 1.66 | M | Uruguay | True |
Ejemplo: Ordenemos las filas por edad.
| Nombre | Edad | Altura | Sexo | Nacionalidad | Inscrito |
079 | Danielle | 23 | 1.71 | F | Argentina | True |
054 | Claudia | 28 | 1.65 | F | Uruguay | True |
066 | Marcos | 18 | 1.80 | M | Chile | False |
178 | Rodolfo | 33 | 1.54 | M | Chile | True |
099 | Rolando | 21 | 1.70 | M | EEUU | True |
007 | Florencia | 19 | 1.69 | F | Uruguay | False |
254 | Pablo | 54 | 2.01 | M | Argentina | False |
121 | Mauricio | 40 | 1.91 | M | Chile | True |
101 | Christian | 20 | 1.85 | M | Argentina | True |
068 | Salvador | 33 | 1.62 | M | Chile | True |
707 | Rodolfo | 46 | 1.66 | M | Uruguay | True |
| Nombre | Edad | Altura | Sexo | Nacionalidad | Inscrito |
066 | Marcos | 18 | 1.80 | M | Chile | False |
007 | Florencia | 19 | 1.69 | F | Uruguay | False |
101 | Christian | 20 | 1.85 | M | Argentina | True |
099 | Rolando | 21 | 1.70 | M | EEUU | True |
079 | Danielle | 23 | 1.71 | F | Argentina | True |
054 | Claudia | 28 | 1.65 | F | Uruguay | True |
068 | Salvador | 33 | 1.62 | M | Chile | True |
178 | Rodolfo | 33 | 1.54 | M | Chile | True |
121 | Mauricio | 40 | 1.91 | M | Chile | True |
707 | Rodolfo | 46 | 1.66 | M | Uruguay | True |
254 | Pablo | 54 | 2.01 | M | Argentina | False |
Al aplicar arrange obtenemos otro Data Frame con las observaciones ordenadas.
mutate()