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

Post on 16-Jul-2022

4 Views

Category:

Documents

0 Downloads

Preview:

Click to see full reader

TRANSCRIPT

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

TidyveRse

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.

Archivos de texto plano (txt, csv, tsv)

Formatos propietarios (dta, sav, sas)

Importación/Exportación de archivos

Archivos Excel (xls, xlsx)

Trasformar estructura de datos

Manipular texto

Manipulación de datos

Manipular fechas

Manipular data frame

Grá�cos y mapas

Análisis y Visualización de datos

Modelización

haven

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.

haven::read_spss()

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

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

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.

readxl

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.

RDS & RData

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.

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.

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

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.

Gestión de archivos y

carpetas desde R

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

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

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.

top related