i nt ro d u cció n a la prog ram ación e n r pa ra el

23
Introducción a la programación en R para el análisis de datos Intendencia de Montevideo Gabriela Mathieu, Lucía Rijo Noviembre 2021 Creative Commons Attribution 4.0 International License

Upload: others

Post on 16-Jul-2022

3 views

Category:

Documents


0 download

TRANSCRIPT

Page 1: I nt ro d u cció n a la prog ram ación e n R pa ra el

Introducción a la programación en R

para el análisis de datos

Intendencia de Montevideo

Gabriela Mathieu, Lucía Rijo

Noviembre 2021

Creative Commons Attribution 4.0 International License

Page 2: I nt ro d u cció n a la prog ram ación e n R pa ra el

TidyveRse

Page 3: I nt ro d u cció n a la prog ram ación e n R pa ra el

Conjunto de paquetes para:

Importar

Limpiar y transformar

Procesar y analizar

Visualizar

tidyverse

Proporciona unaforma uni�cada, armoniosa y más poderosade trabajar con datos que la que ofrece elpaquete base.

Page 4: I nt ro d u cció n a la prog ram ación e n R pa ra el

Archivos de texto plano (txt, csv, tsv)

Formatos propietarios (dta, sav, sas)

Importación/Exportación de archivos

Archivos Excel (xls, xlsx)

Page 5: I nt ro d u cció n a la prog ram ación e n R pa ra el

Trasformar estructura de datos

Manipular texto

Manipulación de datos

Manipular fechas

Manipular data frame

Page 6: I nt ro d u cció n a la prog ram ación e n R pa ra el

Grá�cos y mapas

Análisis y Visualización de datos

Modelización

Page 7: I nt ro d u cció n a la prog ram ación e n R pa ra el

haven

Page 8: I nt ro d u cció n a la prog ram ación e n R pa ra el

Importar datos Stata y SPSS

El paquete haven es parte de tidyverse y mejora las prestaciones de su antecesorforeign.

install.packages("haven") # se instala desde el CRANlibrary(haven) # lo cargo al entorno de trabajo

Si el archivo viene con etiquetas de las variables y sus valores , permite conservarlasal usar la clase double y haven-labelled, haciendo referencia a los números yetiquetas respectivamente.

El paquete labelled (se instala junto con haven) ayuda a manipular la clase haven-labelled.

Page 9: I nt ro d u cció n a la prog ram ación e n R pa ra el

haven::read_spss()

Page 10: I nt ro d u cció n a la prog ram ación e n R pa ra el

Importar un archivo sav

La función read_spss() permite importar un archivo de SPSS en R . Mantiene lasetiquetas de las variables y valores, creando la clase de doble condición haven_labelledy double.

También podemos usar la función read_sav() , que es un alias de la anterior.

# Leemos el archivopersonas <- read_spss("data/personas.sav")

Da un error, pero no es lo que suele pasar. En este caso, se soluciona de�niendo elargumento encoding al valor "latin1":

personas <- read_spss("data/personas.sav", encoding = "latin1")

Page 11: I nt ro d u cció n a la prog ram ación e n R pa ra el

¿Qué es el encoding?

Encoding quiere decir alias codi�cación, y por lo tanto, es el mecanismo delcodi�cación de textos en las computadoras.

Es el proceso de codi�cación de los caracteres alfabéticos y no alfabéticos anúmeros para ser almacenados o transmitidos.

Los encodings más utilizados son Latin1 (ISO-8859-1) y UTF-8 .

Como ya vimos puede pasar que RStudio al leer un script no interprete bien elencoding (se ven signos extraños reemplazando las eñes, las letras con acento uotros caracteres especiales) y en ese caso es necesario reabrir el archivo y elegir elencoding correcto.

En Tools > Global Options > Code > Saving se puede ver el "Default text encoding"con el que se guardan los scripts.

Page 12: I nt ro d u cció n a la prog ram ación e n R pa ra el

Ejercicio

Importa el archivo de la base de hogares en formato dta, y guarda en un objetollamado hogares. Usar la función read_dta().

Exporta el objeto en un archivo SPSS. Usar la función write_sav().

Compara el tamaño de los archivos.

Page 13: I nt ro d u cció n a la prog ram ación e n R pa ra el

readxl

Page 14: I nt ro d u cció n a la prog ram ación e n R pa ra el

Excel: read_xlsx()

La función read_xlsx() permite importar un archivo xlsx, mientras que la funciónread_xls() hace lo propio con un archivo xls.

library(readxl)hogares <- read_xlsx("data/hogares.xslx")

Otro paquete para trabajar con archivos de Excel en R es openxlsx , que tienefuncionalidades adicionales a readxl.

Para exportar objetos a archivos de Excel tenemos el paquete writexl .

La función write_xlsx permite exportar a xlsx.

Page 15: I nt ro d u cció n a la prog ram ación e n R pa ra el

RDS & RData

Page 16: I nt ro d u cció n a la prog ram ación e n R pa ra el

Guardar un objeto a un archivo propio de R

RDS y RData son formatos propios de R.

Sirve para guardar objetos de R . Los archivos ocupan mucho menos espacio queotros formatos.

El formato RDS permite guardar un objeto mientras que RData permite guardarmás de un objeto.

# guardar un objeto en formato rdssaveRDS(viajes, file = "data/viajes.RDS")

# guardar un objeto (data frame) en formato RDatasave(viajes, file = "data/viajes.RData")

En la función save() debo especi�car el argumento file de lo contrario me daráerror, ya que es posible guardar más de un objeto en el mismo archivo Rdata.

Page 17: I nt ro d u cció n a la prog ram ación e n R pa ra el

Leer un archivo Rdata

Utilizo la función load()

No lo asigno a ningún objeto a diferencia del resto de las funciones deimportación/lectura.

# cargar un archivo en formato Rdata# observar que es el único caso en que no debo asignar a un objetoload("data/viajes.Rdata")

El nombre del o los objetos ya está asignado, me doy cuenta qué objeto cargómirando el enviroment. Un truco es escribir la orden entre paréntesis curvos y sedespliega el nombre del objeto en la consola.

Page 18: I nt ro d u cció n a la prog ram ación e n R pa ra el

Leer un archivo RDS

Utilizo la función readRDS()

En este caso puedo prescindir de nombrar el argumento file.

Debo asignar a un objeto

viajes <- readRDS("viajes.RDS")

Page 19: I nt ro d u cció n a la prog ram ación e n R pa ra el

Ejercicio (7')

Leer el archivo de hogares que está en formato xlsx y llamar al objeto hogares.

Guardar el objeto hogares en un archivo Rdata.

Cargar el archivo generado.

Comparar el tamaño de los archivos de hogares en Excel y Rdata.

Page 20: I nt ro d u cció n a la prog ram ación e n R pa ra el

Gestión de archivos y

carpetas desde R

Page 21: I nt ro d u cció n a la prog ram ación e n R pa ra el

Crear carpetas y archivos

Desde R podemos crear, mover, eliminar y copiar archivos y carpetas.La función dir.create() crea una carpeta (por defecto en el directorio donde estáubicado R en esa sesión)

dir.create("mi_carpeta") # Crea nueva carpeta y la nombro "mi_carpeta"

La función �le.create() crea un archivo (por defecto lo ubica en el directorio dondeestá ubicado R en esa sesión)

file.create("mi_archivo.csv") # Crea nuevo archivo con extensión csv y lo nombro "mi_archivo"

[1] TRUE

file.create("mi_archivo.txt") # Crea nuevo archivo con extensión txt y lo nombro "mi_archivo"

[1] TRUE

Page 22: I nt ro d u cció n a la prog ram ación e n R pa ra el

Copiar y buscar archivos en directorio

La función �le.copy() copia un archivo desde un determinado directorio hacia otroEl uso de la función es: �le.copy(<nombre archivo>, <carpeta destino>)

# Copia "mi_archivo.txt" a la carpeta recientemente creada "mi_carpeta"file.copy(from = "mi_archivo.txt", to = "mi_carpeta", recursive = TRUE)

[1] TRUE

La función list.�les() lista los archivos existentes en el directorio actual

# Muestra los archivos existentes en el directorio actuallist.files()

También se pueden listar archivos con una extensión en particular

# Muestra los archivos con extensión csvlist.files(pattern = ".csv")

Page 23: I nt ro d u cció n a la prog ram ación e n R pa ra el

Eliminar carpetas o archivos

La función remove.�le() elimina un archivo existente en el directorio actual.También podemos usar la función unlink() .Como argumento le tenemos que indicar el nombre del archivo que queremosremover:

remove.file("mi_archivo.txt")

Para remover una carpeta utilizamos la función unlink() , y como argumento se leindica el nombre de la carpeta a remover:

# Remueve directoriounlink("mi_carpeta", recursive = TRUE)

Para eliminar un directorio, sí o sí se debe de especi�car el parámetro recursive =TRUE.