I nt ro d u cció n a la prog ram ación e n R pa ra el ...
Transcript of I nt ro d u cció n a la prog ram ación e n R pa ra el ...
![Page 1: I nt ro d u cció n a la prog ram ación e n R pa ra el ...](https://reader036.fdocuments.ec/reader036/viewer/2022071619/62d1f31d9df1ff62810edf52/html5/thumbnails/1.jpg)
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 ...](https://reader036.fdocuments.ec/reader036/viewer/2022071619/62d1f31d9df1ff62810edf52/html5/thumbnails/2.jpg)
TidyveRse
![Page 3: I nt ro d u cció n a la prog ram ación e n R pa ra el ...](https://reader036.fdocuments.ec/reader036/viewer/2022071619/62d1f31d9df1ff62810edf52/html5/thumbnails/3.jpg)
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 ...](https://reader036.fdocuments.ec/reader036/viewer/2022071619/62d1f31d9df1ff62810edf52/html5/thumbnails/4.jpg)
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 ...](https://reader036.fdocuments.ec/reader036/viewer/2022071619/62d1f31d9df1ff62810edf52/html5/thumbnails/5.jpg)
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 ...](https://reader036.fdocuments.ec/reader036/viewer/2022071619/62d1f31d9df1ff62810edf52/html5/thumbnails/6.jpg)
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 ...](https://reader036.fdocuments.ec/reader036/viewer/2022071619/62d1f31d9df1ff62810edf52/html5/thumbnails/7.jpg)
haven
![Page 8: I nt ro d u cció n a la prog ram ación e n R pa ra el ...](https://reader036.fdocuments.ec/reader036/viewer/2022071619/62d1f31d9df1ff62810edf52/html5/thumbnails/8.jpg)
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 ...](https://reader036.fdocuments.ec/reader036/viewer/2022071619/62d1f31d9df1ff62810edf52/html5/thumbnails/9.jpg)
haven::read_spss()
![Page 10: I nt ro d u cció n a la prog ram ación e n R pa ra el ...](https://reader036.fdocuments.ec/reader036/viewer/2022071619/62d1f31d9df1ff62810edf52/html5/thumbnails/10.jpg)
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 ...](https://reader036.fdocuments.ec/reader036/viewer/2022071619/62d1f31d9df1ff62810edf52/html5/thumbnails/11.jpg)
¿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 ...](https://reader036.fdocuments.ec/reader036/viewer/2022071619/62d1f31d9df1ff62810edf52/html5/thumbnails/12.jpg)
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 ...](https://reader036.fdocuments.ec/reader036/viewer/2022071619/62d1f31d9df1ff62810edf52/html5/thumbnails/13.jpg)
readxl
![Page 14: I nt ro d u cció n a la prog ram ación e n R pa ra el ...](https://reader036.fdocuments.ec/reader036/viewer/2022071619/62d1f31d9df1ff62810edf52/html5/thumbnails/14.jpg)
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 ...](https://reader036.fdocuments.ec/reader036/viewer/2022071619/62d1f31d9df1ff62810edf52/html5/thumbnails/15.jpg)
RDS & RData
![Page 16: I nt ro d u cció n a la prog ram ación e n R pa ra el ...](https://reader036.fdocuments.ec/reader036/viewer/2022071619/62d1f31d9df1ff62810edf52/html5/thumbnails/16.jpg)
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 ...](https://reader036.fdocuments.ec/reader036/viewer/2022071619/62d1f31d9df1ff62810edf52/html5/thumbnails/17.jpg)
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 ...](https://reader036.fdocuments.ec/reader036/viewer/2022071619/62d1f31d9df1ff62810edf52/html5/thumbnails/18.jpg)
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 ...](https://reader036.fdocuments.ec/reader036/viewer/2022071619/62d1f31d9df1ff62810edf52/html5/thumbnails/19.jpg)
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 ...](https://reader036.fdocuments.ec/reader036/viewer/2022071619/62d1f31d9df1ff62810edf52/html5/thumbnails/20.jpg)
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 ...](https://reader036.fdocuments.ec/reader036/viewer/2022071619/62d1f31d9df1ff62810edf52/html5/thumbnails/21.jpg)
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 ...](https://reader036.fdocuments.ec/reader036/viewer/2022071619/62d1f31d9df1ff62810edf52/html5/thumbnails/22.jpg)
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 ...](https://reader036.fdocuments.ec/reader036/viewer/2022071619/62d1f31d9df1ff62810edf52/html5/thumbnails/23.jpg)
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.