1 of 41

Clase 1: Programación y  gestión de datos 

Introducción a R

2 of 41

Agenda

  • ¿Qué es un lenguaje de programación?¿Por qué programar?
  • Introducción a R / Tidyverse como lenguaje / librerías para analizar datos
  • Tipos de variables en R: character, numeric (real or decimal), integer, logical.
  • Data frames (o “tibbles” en Tidyverse) : 
    • Contenedores “inteligentes” de variables.
  • Flujo de trabajo en R / Tidyverse: Pipes (%>%) + Aplicar funciones
  • Cómo cargar datos desde un archivo CSV

3 of 41

¿Qué es un lenguaje de programación?

  • Funciones / Comandos: Permiten manipular datos y controlar computador.
  • Tipos de Datos / Variables: Permiten almacenar información.
  • Gramática / Sintaxis: Estructura el uso de  funciones y variables.�
  • Hay lenguajes de programación diseñados para distintos tipos de uso
    • Diseño de páginas web
    • Diseño de aplicaciones móviles
    • Diseño gráfico y animaciones
    • Robótica y automatización
    • Gestión y análisis de datos

4 of 41

¿Qué tipo de funciones y variables se usarán para

crear un video-juego como Super Mario Odyssey?

5 of 41

¿Por qué usar un lenguaje de programación?

  • Gran parte del mundo está automatizado
  • Repetir procesos con datos distintos

6 of 41

¿Qué es R?

Un lenguaje de programación diseñado para el análisis de datos, computación estadística y visualización.

    • Es posible hacer análisis estadísticos completos en un par de líneas
    • Fácil trazabilidad (replicar y verificar resultados)
    • Gran flexibilidad para desarrollar modelos
    • Facilidades en generación de reportes 

7 of 41

¿Por qué usar R?

Varias alternativas: SAS, Stata, SPSS, Excel, MATLAB, Minitab, Python, etc.

Pero:

  • Es un proyecto de código libre ("Think free as in free speech, not free beer").
  • R cuenta con poderosas herramientas de visualización
  • R existe para casi todas las plataformas computacionales
  • Nuevas funcionalidades siempre en desarrollo

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.

8 of 41

RStudio Cloud

IDE (Integrated development environment): entorno para el desarrollo en R.

9 of 41

Introducción a R

10 of 41

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])

11 of 41

Tipos de datos simples

Variables

  • character: "h", "swc", “Hola. Mi nombre es Diego. El tuyo?”
  • numeric: 2, 15.5
  • integer: 2L (la L indica a R almacenar el numero como entero)
  • logical: TRUE, FALSE (representan valores de verdad)

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.

12 of 41

Tipos de datos

  • character: "h", "swc", “Hola. Mi nombre es Diego. El tuyo?”
  • numeric: 2, 15.5
  • integer: 2L (la L indica a R almacenar el numero como entero)
  • logical: TRUE, FALSE (representan valores de verdad)

�a <- “Hola mundo.”

b <- 37.5

class(a)

13 of 41

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:�����

14 of 41

Introducción a Tidyverse

15 of 41

Tidyverse - Librerías / Paquetes de R

16 of 41

Tidyverse y el pensar a "cocinar"

  • ¿Cómo hacer panqueques?

17 of 41

Ejemplo

  • ¿Cuál es la edad promedio de las personas de Chile en esta tabla?

18 of 41

¿Cúal es la receta?

  • ¿Cuál es la edad promedio de las personas de Chile en esta tabla?

19 of 41

La receta en el tidyverse

  • ¿Cuál es la edad promedio de las personas de Chile en esta tabla?

20 of 41

Tibble: El Data Frame que se usa en Tidyverse.

  • Tibble: Matriz con valores
  • Filas → “Observaciones”
    • Cada fila tiene un nombre o índice que es único
    • Indices / nombres pueden ser de cualquier tipo
    • Se usan poco en Tidyverse, pero están ahí
  • Columnas → “Variables”
    • Cada columna tiene un nombre único (de cualquier tipo)
    • Cada columna tiene un tipo asociado
    • Todos los valores de la columna son del tipo asociado
    • Se usan mucho en Tidyverse

21 of 41

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

22 of 41

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

23 of 41

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

24 of 41

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

25 of 41

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

26 of 41

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

27 of 41

Introducción a dplyr

28 of 41

Dplyr - Gramática para manipulación de Data Frames

  • mutate() agregar nuevas variables que son función de otras existentes
  • select() seleccionar un conjunto de variables por sus nombres
  • filter() elegir subconjunto de observaciones basado en sus valores
  • summarise() reducir múltiples valores a un único valor de resumen
  • arrange() cambiar el orden de las filas / observaciones

29 of 41

filter()

30 of 41

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’.

31 of 41

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

32 of 41

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.

33 of 41

select()

34 of 41

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.

35 of 41

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

36 of 41

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.

37 of 41

arrange()

38 of 41

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.

39 of 41

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

40 of 41

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.

41 of 41

mutate()