1. Data frames

Los data frame se usan para almacenar datos en forma de tablas (filas / columnas), como estamos habituados en Excel, Spss, etc.

Los data frame pueden almacenar objetos/datos de distinto tipo: numéricos, carácter, etc. Normalmente los data frame los creamos al cargar/leer una base de datos, sin embargo podemos crear un data frame desde R para ver su estructura.

presupuesto2021 = data.frame( prioridad= c("reactivación", "educación", "salud", "mujer","pobreza"), monto_millones = c(9879, 33132, 20991, 690, 5392))

Examinemos algunas características básicas del data frame:

class(presupuesto2021) #clase del objeto
## [1] "data.frame"
nrow(presupuesto2021) #número de filas (casos)
## [1] 5
ncol(presupuesto2021) #número de columnas (variables)
## [1] 2
dim(presupuesto2021) #número de filas (casos) y columnas (variables) 
## [1] 5 2
str (presupuesto2021) #estructura 
## 'data.frame':    5 obs. of  2 variables:
##  $ prioridad     : chr  "reactivación" "educación" "salud" "mujer" ...
##  $ monto_millones: num  9879 33132 20991 690 5392
names(presupuesto2021) #nombre de las variables 
## [1] "prioridad"      "monto_millones"
head(presupuesto2021) #nos muestra las primeras 6 observaciones de la data
##      prioridad monto_millones
## 1 reactivación           9879
## 2    educación          33132
## 3        salud          20991
## 4        mujer            690
## 5      pobreza           5392
tail(presupuesto2021) #nos muestra las 6 últimas observaciones de la data
##      prioridad monto_millones
## 1 reactivación           9879
## 2    educación          33132
## 3        salud          20991
## 4        mujer            690
## 5      pobreza           5392

Para acceder a los elementos de un data frame utilizamos los símbolos $ o []. Si queremos seleccionar la variable “monto_millones” de nuestro data frame:

presupuesto2021$monto_millones #opción 1
## [1]  9879 33132 20991   690  5392
presupuesto2021[2] #opción 2
##   monto_millones
## 1           9879
## 2          33132
## 3          20991
## 4            690
## 5           5392

Si trabajamos con un data frame, para no tener que acceder a una variable utilizando la expresión objeto$variable, que a veces resulta engorroso, puede hacerse un attach al objeto. Esto nos permitirá acceder directamente a las variables de la base de datos por su nombre.

attach(presupuesto2021)
monto_millones # ahora puedo acceder directamente a las variables por su nombre
## [1]  9879 33132 20991   690  5392
prioridad
## [1] "reactivación" "educación"    "salud"        "mujer"        "pobreza"

2. Cargar datos de ‘proprietary software’ en R

R nos permite abrir archivos en diversas extensiones. Algunos que usaremos en este curso son las siguientes:

Extensión Tipo de archivo
rda o RData Archivo en formato R
csv Archivo delimitado por comas
xls Archivo en formato Excel
sav Archivo en formato SPSS
dta Archivo en formato STATA
JSON JavaScript Object Notation
XML Extensible Markup Language

Los datos pueden estar en algun lugar de la web; si crees que esos datos permanecerán en ese sitio, quizás puedas sólo utilizar su link de descarga y leerlos directamente. Lo más seguro, en todo caso, es usarlos de esa manera y luego guardar esa data en tu repositorio del proyecto (en la ‘nube’). Esto facilitará su lectura y replicabilidad.

Si por alguna razón deseas leerlos desde tu computadora, debes tener los archivos en la misma carpeta de tu R Markdown, R Notebook.

Para cargar archivos de distintos formatos debemos cargar el paquete “rio”. La libreria “rio” es muy versatil y permite importar datos en distintos formatos con el comendo import()

Instalamos el paquete (por si no lo tienen), utilizando el siguiente comando:install.packages(“rio”)

La encuesta LAPOP está en la web. Varios años son de libre acceso, pero podemos guardar una copia en GitHub, y leer esa copia desde ahí:

library(rio)
lkDTA="https://github.com/PoliticayGobiernoPUCP/estadistica_anapol2/raw/master/DATA/lapop2012.dta"
dataStata=import(lkDTA)

Toda data debe tener una guía metodológica o una descripción de las columnas (metadata) en su web original. Es bueno copiar y mantener una copia de esos materiales en tu proyecto.

Abramos el mismo archivo de LAPOP, pero en SPSS:

lkSAV="https://github.com/PoliticayGobiernoPUCP/estadistica_anapol2/raw/master/DATA/lapop2012.sav"
dataSpss=import(lkSAV)

El mismo archivo, pero en EXCEL:

lkXLSX="https://github.com/PoliticayGobiernoPUCP/estadistica_anapol2/raw/master/DATA/lapop2012.xlsx"
dataExcel=import(lkXLSX)

Recuerden que un archivo csv es delimitado por comas, sin embargo, siempre verifiquen cual es el separador de su ordenador. Si la data está en CSV, podemos usar rio, y también la función del R básico:

lkCSV="https://github.com/PoliticayGobiernoPUCP/estadistica_anapol2/raw/master/DATA/lapop2012.csv"
dataCSV=import(lkCSV)

Otra forma:

lapop=read.csv("https://github.com/PoliticayGobiernoPUCP/estadistica_anapol2/raw/master/DATA/lapop2012.csv",                 # Nombre del archivo o ruta completa del archivo
         header = TRUE,        # Leer el encabezado (TRUE) o no (FALSE)
         sep = ",",            # Separador de los valores
         quote = "\"",         # Caracter de citaciones
         dec = ".",            # Punto decimal
         fill = TRUE,          # Rellenar celdas vacías (TRUE) o no (FALSE)
         comment.char = "",    # Carácter de los comentarios o cadenas vacías
         encoding = "unknown") # Codificación del archivo

Podemos muchas veces usar los formularios de Google Docs para recoger información. Estos formularios dejan la información en una hoja de calculo de google (GoogleSheet). Si Ud publica esa data como archivo tipo CSV, use el comando read.csv.

Ejemplo:

lkDOC=("https://docs.google.com/spreadsheets/d/e/2PACX-1vSlVNHf9HmiU27DGrafIQCtpWcuqRp4w_GUQNE8RwSdTt7OH3TaGhkQd5v1xVKpW6vDRUNX0eBJh2Pk/pub?gid=773718740&single=true&output=csv")
dataDOC=read.csv(lkDOC)

En en este link: (https://app.box.com/s/mdcqfue3u0wis0b3v4gy0kwcjv4e0amu) encontrarás una carpeta comprimida. Al descomprimirla, encontraras varios tipos de archivos con el mismo nombre. Eso constituye un mapa en formato SHAPEFILE. Los shapefiles tienen muchos archivos de subcomponentes, cada uno con una extensión de archivo diferente. Un archivo tendrá la extensión “.shp”, pero otros pueden tener “.dbf”, “.prj”, etc. Es difícil que R lea este mapa, por lo que debes convertirlo a formato topojson.

Cambie el mapa a formato JSON. Para ello vaya al mapshaper(https://mapshaper.org/); desde ahí, suba los archivos de la carpeta, simplifíquelo, y luego exportelo como topojson. Luego, suba el archivo topojson a Github; guarde el link de descarga del archivo subido; y ábralo en R así:

instale los paquetes “sp” y “rgdal”

library(sp)
library(rgdal)
## rgdal: version: 1.5-23, (SVN revision 1121)
## Geospatial Data Abstraction Library extensions to R successfully loaded
## Loaded GDAL runtime: GDAL 3.2.1, released 2020/12/29
## Path to GDAL shared files: C:/Users/GABRIEL/Documents/R/win-library/4.1/rgdal/gdal
## GDAL binary built with GEOS: TRUE 
## Loaded PROJ runtime: Rel. 7.2.1, January 1st, 2021, [PJ_VERSION: 721]
## Path to PROJ shared files: C:/Users/GABRIEL/Documents/R/win-library/4.1/rgdal/proj
## PROJ CDN enabled: FALSE
## Linking to sp version:1.4-5
## To mute warnings of possible GDAL/OSR exportToProj4() degradation,
## use options("rgdal_show_exportToProj4_warnings"="none") before loading rgdal.
## Overwritten PROJ_LIB was C:/Users/GABRIEL/Documents/R/win-library/4.1/rgdal/proj
fromGit=("https://github.com/gabrielramost/Estadistica2/blob/main/seattle.json?raw=true") #link desde github

wazipMap <- rgdal::readOGR(fromGit,stringsAsFactors = FALSE)
## OGR data source with driver: TopoJSON 
## Source: "https://github.com/gabrielramost/Estadistica2/blob/main/seattle.json?raw=true", layer: "seattle"
## with 598 features
## It has 102 fields
plot(wazipMap)

EJERCICIO.