0% encontró este documento útil (0 votos)
4 vistas67 páginas

Introducción a R y RStudio

El documento es una introducción al lenguaje de programación R y su entorno de desarrollo RStudio, abarcando desde la instalación hasta la creación de proyectos y scripts. Se describen las operaciones básicas, tipos de objetos, importación y exportación de datos, así como la fusión de bases y la creación de mapas. Además, se incluyen ejemplos prácticos y comandos esenciales para trabajar con R y RStudio.

Cargado por

Anderson Alavi
Derechos de autor
© All Rights Reserved
Nos tomamos en serio los derechos de los contenidos. Si sospechas que se trata de tu contenido, reclámalo aquí.
Formatos disponibles
Descarga como PDF, TXT o lee en línea desde Scribd
0% encontró este documento útil (0 votos)
4 vistas67 páginas

Introducción a R y RStudio

El documento es una introducción al lenguaje de programación R y su entorno de desarrollo RStudio, abarcando desde la instalación hasta la creación de proyectos y scripts. Se describen las operaciones básicas, tipos de objetos, importación y exportación de datos, así como la fusión de bases y la creación de mapas. Además, se incluyen ejemplos prácticos y comandos esenciales para trabajar con R y RStudio.

Cargado por

Anderson Alavi
Derechos de autor
© All Rights Reserved
Nos tomamos en serio los derechos de los contenidos. Si sospechas que se trata de tu contenido, reclámalo aquí.
Formatos disponibles
Descarga como PDF, TXT o lee en línea desde Scribd

Introducción a R

Econ. Alexis Adonai Morales Alberto

2025-01-25
2
Contents

Introducción 5
¿Qué es R? . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 5
¿Qué es RStudio? . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 5
¿De donde se puede descargar R y Rstudio? . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 6
Iniciando en R y RStudio . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 7
¿Cómo se crea un proyecto en RStudio? . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 10
¿Cómo se crea un Script? . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 10
¿Cómo instalar y nombrar una paquetería? . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 11

Tipo de operaciones 15
Suma . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 15
Resta . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 15
Multiplicación . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 16
División . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 16

Tipos de objetos 17
Variables . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 17
Vectores . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 17
Extraer un elemento de un vector . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 18
Matrices . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 18
Operaciones de matrices . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 19
Transposición, determinante e inversa de una matriz . . . . . . . . . . . . . . . . . . . . . . . . . . 20
Marco de datos “data frame” . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 22
Listas . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 23

Importación y exportación de bases de datos 25


Carga de bases de datos desde archivos . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 25
Preparación para importar y exportar datos . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 25
Almacenando la base dentro de un proyecto . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 26
Importación de datos . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 26
Exportación de datos . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 37

3
4 CONTENTS

Fusión de bases 41
Inner join (Intersección) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 43
Full Join (Unión completa) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 45
Left join (Unir a la izquierda) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 45
Right join (Unir a la derecha) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 48

Mapas 51
¿Qué es un archivo .shp? . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 51
¿Cómo importar un archivo .shp a R? . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 51
Gráficando cartografía . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 51
Realiazando mapas temáticos . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 53
Unión de mapa con base . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 55
Graficando mapa interactivo con plot . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 55
Graficando mapa interactivo con ggplot2 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 58
Ejemplo práctico: Trazando mapa del PIB por entidad . . . . . . . . . . . . . . . . . . . . . . . . . . 63
Introducción

¿Qué es R?

R es un lenguaje estadístico computacional, aunque también esta catalogado como de programación. Nació como
una reimplementación del lenguaje libre S.
Apareció en 1993 en Austria y hoy en día es una herramienta utilizada por estudiosos de la estadística, economía,
actuaría, matemáticas, biología diversas áreas requieran del análisis de datos.

Figure 1: Logo de r-project.

Figure 2: *

Su implementación es diversa, pues con el paso del tiempo sus aplicaciones han alcanzado desde realizar grá-
ficos simples o avanzados, modelos de predicción, cartografía o simple análisis estadístico (ya sea descriptivo o
inferencial). Además también ha tenido desarrollo en la administración de bases de datos, tal como la manipu-
lación, limpieza y ordenamiento de datos, o desarrollos como Rmarkdown, Quatro que permiten realizar tareas
como la creación de documentos de textp (como este que estas leyendo) hasta aplicaciones interativas como
Shiny aplications.

¿Qué es RStudio?

RStudio es un entorno o interfaz de desarrollo integrado para el lenguaje de programación de R, dedicado a la


computación estadística, gráficos y reportes. En el mismo, se incluye una consola, editor de sintaxis y algunos
espacios para visualizar los gráficos, utilerias y herramientas de R.

5
6 CONTENTS

Figure 3: Ejemplo 1

Figure 4: *

Fue lanzado por primera vez como software libre en Febrero del 2011 por Joseph J. Allaire mediante una estructura
de Java, C++ y JavaScript1 .

Figure 5: Logo de RStudio

Figure 6: *

Su uso es dinámico, puesto a que aparte de poder enlazar el languaje de R, se pueden elaborar reportes mediante
LaTex y la asociación de otros programas de computo, tales como Python, SQL, etc. Es por ello que es una interfaz
que ha cobrado mucho uso en diferentes áreas de estudio.

¿De donde se puede descargar R y Rstudio?

Para descagar R-project debes de ingresar a la siguiente dirección: [Link] donde ahí tendrás
tres opciones para diferentes sistemas operativos: Linux, macOS y Windows.
En nuestro caso seleccionaremos Windows, posterior a ello, tendremos una ventana como la siguiente:
1
Hay que recordar que estos lenguajes mencionados se utilizan para el desarollo de aplicaciones de computación, en este caso se usaron
para desarrollar el entorno de RStudio.
CONTENTS 7

Figure 7: Ejemplo 2

Figure 8: *

Figure 9: Descargas para diferentes S.O.

Figure 10: *

Posteior a ello, seleccionamos install R for the first time y en automático comenzará la descarga del archivo .exe
con el cual podrás instalar el lenguaje de R. Además de instalar R, en el caso de Windows hay que complementar
con RTools, esta herramienta permite compilar paquetes que provengan de otras estructuras (como C++), es por
ello que también se requiere.
Para proceder a instalar Rtools, es necesario dirigirse al sitio que aparece en la imagen anterior y seleccionar
Rtools installer y posteriormente realizar el proceso de instalación.
Para descargar RStudio nos dirigimos al siguinte enlace: [Link] donde po-
dremos encontrar la página que enlazará con el descargador de RStudio en la versión de escritorio gratuita.

Iniciando en R y RStudio

En esta sección podrás encontrar todo lo relacionado con los primeros pasos de R y RStudio, dividos en dos
subtemas, en los cuales se harán diversas explicaciones del uso de este lenguaje.
8 CONTENTS

Figure 11: Descarga para Windows

Figure 12: *

Figure 13: Descarga de RStuido para escritorio

Figure 14: *

Una vez instalado R, Rtoos al ejecutarlo encontrarás un interfaz muy similar a lo que es CMD o símbolo de sistema,
en el cual solo se pueden ejecutar códigos del propio lenguaje, sin poder elaborar algún archivo de memoria o de
serie de comandos que se puedan ejecutar automáticamente, es por ello que R suele ser un poco tedioso, ya que
solo se puede escribir una vez el código y si este resulta estar mal, tendrás que regresar y ver si permite corregir
dicho código, o en su defecto, reescribir el código.

RStudio

RStudio tiene una facilidad de manejo, puesto a que su interfaz permite una interacción más eficiente para admin-
istrar el trabajo, pues la pantalla se divide en diversos espacios, los cuales son:

• Script: Es un archvio con la extensión .R en el cual contiene lineas de comando, en el cual se pueden
escribir diversas instrucciones y ejecutar, pero que permite la corrección imediata del código sin necesidad
de regresarse o de reescribir todo el código.

• Objetos: Es un espacio donde se podrán visualizar diversos objetos, tales como: Dataframe, vectores de
valores, series de tiempo, objetos de clase, logicos, etc.
CONTENTS 9

Figure 15: Consola de R

Figure 16: *

• Consola: Espacio donde se refleja el proceso de ejecución de los comandos del lenguaje, es decir, es tal
cual la interfaz que se visualiza en R.

• Archivos, gráficos, paquetes y ayuda: Es una espacio donde se pueden visualizar los archivos de donde se
enruta el espacio de trabajo, también se reflejan los gráficos una vez ejecutados, además podemos observar
si las paqueterias instaladas estan en funcionamiento o simplemente no estan instaladas y por último, la
ventana de ayuda, visualiza la estructura o documentos de los comandos o paqueterias de R.

Figure 17: Interfaz de RStudio

Figure 18: *
10 CONTENTS

¿Cómo se crea un proyecto en RStudio?

Para poder elaborar un proyecto, en el cual se incluyan archivos .R (Script), bases de datos con extensiones .xlsx,
.dta, .csv o imagenes (.png) se requiere la siguinte ruta de RStudio. Para ello nos vamos a “File > New project”:

Figure 19: Nuevo proyecto

Figure 20: *

Posteior a ello, se elegirá “New Directory > New Project”, donde nombraremos el directorio y enrutaremos a una
carpeta donde solo contendrá el proyecto (lo anteior para facilidad de manipulación).

¿Cómo se crea un Script?

Una vez ya elaborado el proyecto, tendremos la siguiente visualización:


Después solo se presionará ctrl + shift + N y desplegará una ventana nueva con el Script:
Finalmente para ejecutar una linera de código, debes posicionarte al final del comando y presionar ctrl + enter.
CONTENTS 11

Figure 21: Nombramiento y enrutamiento del proyecto

Figure 22: *

¿Cómo instalar y nombrar una paquetería?

Para instalar una paqueteria en R, solo se debe seguir el siguiente comando (la libreria tseries es un ejemplo):

# [Link]("tseries", dependencies = TRUE)

# sirve como comentario, para replicarlo,


# escribe en el script sin este simbolo "#"

El comando se divide en: [Link](“libreria a elegir o instalar”, dependencies=TRUE) donde depen-


dencies equivale al repositorio que empata la versión compatible de la paqueteria con al versión de R.
De igual manera para instalar varias paqueterias en una sola linea se necesita crear un vector con los nombres
de las paqueterias para posteriormente instalarlas, por ejemplo:

# paquetes<-c("ggplot2", "dplyr")
# [Link](paquetes, dependencies=TRUE)

Para llamar una liberia se utiliza lo siguiente:

library(tseries)

Pero de igualmanera, podemos llamar diversas liberías de forma simultanea con la ayuda de libraries que se
encuentra en la libreria easypackages:

library(easypackages)

paquetes <- c("tidyverse", "urca")


libraries(paquetes)
12 CONTENTS

Figure 23: Proyecto nuevo

Figure 24: *

Por último, podemos llamar funciones sin la necesidad de cargar la paqueteria completa, para ello utilizamos
dobles puntos (::) , pero la estructura es: paquete::función, tal como se mostrará a continuación.

x<-seq(1,20,1)

urca::summary(x)

## Min. 1st Qu. Median Mean 3rd Qu. Max.


## 1.00 5.75 10.50 10.50 15.25 20.00
CONTENTS 13

Figure 25: Nuevo script

Figure 26: *
14 CONTENTS
Tipo de operaciones

En R existen diversas operaciones, tales como: Suma, resta, multiplicación y división. Además de otro tipo de
funciones así como valores lógicos o de carácteres.

Suma

Para realizar una suma, es muy sencillo, simplemente se debe ocupar el operador “+” y con ello se ejecuta la
suma, por ejemplo:

5+2

## [1] 7

10+16

## [1] 26

1256+2378

## [1] 3634

Resta

Para realiazar una resta, solo se tiene que utilizar el simbolo “-” para indicar la operación, por ejemplo:

5-2

## [1] 3

15-34

## [1] -19

9873-3091

## [1] 6782

15
16 CONTENTS

Multiplicación

Cuando se requiere efectuar una mutiplicación, es necesario utilizar el símbolo **“*“**, con ello se puede realizar
la operación, por ejemplo:

6*12

## [1] 72

10*10

## [1] 100

35*89

## [1] 3115

Sin embargo cuando se trata de matrices, el operador cambia a _“%*%“_.

División

Por último, para poder operar una división solo basta con utilizar “/”, ejemplo:

100/10

## [1] 10

25/195

## [1] 0.1282051

1/3

## [1] 0.3333333
Tipos de objetos

Variables

Dentro de R, existen diversos tipos de objetos, los cuales son diversos. Pero también se pueden asignar variables,
donde se otorga un valor a una letra o nombre en especifico, para realizar lo anterior se utiliza el operador <-, por
ejemplo:

# Variables númericas

x<-67

## [1] 67

5*x-43

## [1] 292

# Variables cualitativas

pais<-"Mexico"
pais

## [1] "Mexico"

Vectores

Este tipo de datos, son arreglos ordenados en los cuales se puede almacenar información de tipo númerico (vari-
ables cuantitativas), alfanúmerico (variables cualitativa) o un valor lógico (Falso y verdadero ó TRUE y FALSE),
pero que no son mezclas de estos. En R, para poder crear dicho vector, se utiliza el símbolo c() y que significa
concatenar.
Esta función almacena la información de forma vectorial, por ende se acostumbra a etiquetarlo con un nombre
corto y repreentativo del tipo de datos que contiene, ejemplo:

edad<-c(25,40,39,46,10,11,14,23,43)
deporte<-c(TRUE, TRUE, FALSE, FALSE, TRUE, TRUE, TRUE,
FALSE, FALSE)
comic_fav<-c(NA,"Superman", "Batman", NA, "Shazam",
"Batman", "Superman", NA, "GreenLanter")

edad

17
18 CONTENTS

## [1] 25 40 39 46 10 11 14 23 43

deporte

## [1] TRUE TRUE FALSE FALSE TRUE TRUE TRUE FALSE FALSE

comic_fav

## [1] NA "Superman" "Batman" NA "Shazam"


## [6] "Batman" "Superman" NA "GreenLanter"

Extraer un elemento de un vector

Para extraer un dato que se encuentre dentro de un vector, se hace uso del corchete “[]” y dentro del mismo solo
se coloa la posición en donde se encuenntra el dato, ejemplo:

edad[5]

## [1] 10

En el ejemplo anterior se observa que el dato número 5, el valor es de 10.


Ahora, si deseamos encontrar el dato número 2 y 9 del vector comic_fav solo tenemos que utilizar [c(2,8)] para
realizar esta busqueda, ejemplo:

comic_fav[c(2,9)]

## [1] "Superman" "GreenLanter"

Por último, si se busca exceptuar un dato dentro de un vector solo se debe poner el valor como [-a] donde a es la
posición del dato a omitir, ejemplo:

deporte[-5]

## [1] TRUE TRUE FALSE FALSE TRUE TRUE FALSE FALSE

Matrices

Las matrices son arreglos rectangulares de filas y columnas con información númerica, alfanúmerica o lógica.
Para crear unaa matriz, se utiliza la función matriz().

Ejemplos

Vamos a contruir diversas matrices, con la finalidad de demostrar que hay diferentes maneras de declarar una
matriz.
Para crear una matriz cuadrada:
CONTENTS 19

matriz1<-matrix(c(11,21,31,12,22,32,13,23,33), nrow = 3, ncol = 3)

matriz1

## [,1] [,2] [,3]


## [1,] 11 12 13
## [2,] 21 22 23
## [3,] 31 32 33

Para crear una matriz cuadrada de números consecutivos

matriz2<-matrix(1:9, nrow=3, ncol=3)

matriz2

## [,1] [,2] [,3]


## [1,] 1 4 7
## [2,] 2 5 8
## [3,] 3 6 9

Otra forma de plantear matrices, es mediante vectores y con la función cbind() la cual une columnas, ejemplo:

vector1<-c(34,56,22)
vector2<-c(22,67,98)
vector3<-c(12,45,76)

matriz3<-matrix(cbind(vector1,vector2, vector3), nrow = 3, ncol = 3)

matriz3

## [,1] [,2] [,3]


## [1,] 34 22 12
## [2,] 56 67 45
## [3,] 22 98 76

Ahora bien, si lo que se busca es acomodar los vectores por fila, se hace uso de rbind(), ejemplo:

matriz4<-matrix(rbind(vector1, vector2, vector3), nrow = 3, ncol = 3)

matriz4

## [,1] [,2] [,3]


## [1,] 34 56 22
## [2,] 22 67 98
## [3,] 12 45 76

Operaciones de matrices

Para realizar diversas operaciones de matrices, se debe tomar en cuenta que las matrices a operar tienen que ser
cuadráticas (mismas filas y columnas), ya que de no ser así las operaciones tal vez no podrás realizarse.
Como ejemplos, se utilizarán las matrices 3 y 4 de los ejemplos anteriores.
20 CONTENTS

Suma

matriz5<- matriz3+matriz4

matriz5

## [,1] [,2] [,3]


## [1,] 68 78 34
## [2,] 78 134 143
## [3,] 34 143 152

Resta

matriz6<- matriz3-matriz4

matriz6

## [,1] [,2] [,3]


## [1,] 0 -34 -10
## [2,] 34 0 -53
## [3,] 10 53 0

Multiplicación

matriz7<- matriz3%*%matriz4

matriz7

## [,1] [,2] [,3]


## [1,] 1784 3918 3816
## [2,] 3918 9650 11218
## [3,] 3816 11218 15864

Transposición, determinante e inversa de una matriz

En esta sección se demuestra como se pueden realizar estas operaciones en R.

Transpocisón

Se utiliza para cambiar de lugares de las filas por columnas y viceversa en una matriz, en R, para realizar dicha
acción se utiliza t(), ejemplo:

matriz4

## [,1] [,2] [,3]


## [1,] 34 56 22
## [2,] 22 67 98
## [3,] 12 45 76
CONTENTS 21

matrizt<-t(matriz4)

matrizt

## [,1] [,2] [,3]


## [1,] 34 22 12
## [2,] 56 67 45
## [3,] 22 98 76

Determinante

Se utiliza para obtener una forma multilineal alternada de un [Link] definición indica una serie de propiedades
matemáticas y generaliza el concepto de determinante haciédolo aplicable en numerosos campos, para realizar
dicha operación en R, se utiliza det(), ejemplo:

matriz3

## [,1] [,2] [,3]


## [1,] 34 22 12
## [2,] 56 67 45
## [3,] 22 98 76

matrizdet<-det(matriz3)

matrizdet

## [1] -496

Inversa

La inversa de una matriz se utiliza por la necesidad de dividir matrices, ya que en el algebra lineal o matricial, no
existe tal operación, es por ello que se genera el concepto de inversa.
Para realizar este proceso se requiere:

• Definir una matriz m=n elementos, que en pocas palabras, es cuadrática.

• Definir una matriz de diagonales (matriz de identidad), esto se realiza con el comando diag(1,nrow=n), se
debe definir la cantidad de 1 en la diagonal conforme al valor de la matriz cuadrática a invertir.

• Se utiliza el comando solve()para resolver la matriz y obtener la iversa.

Ejemplo:

matriz3 #Es cuadrática 3X3

## [,1] [,2] [,3]


## [1,] 34 22 12
## [2,] 56 67 45
## [3,] 22 98 76
22 CONTENTS

I<-diag(1, nrow = 3)

## [,1] [,2] [,3]


## [1,] 1 0 0
## [2,] 0 1 0
## [3,] 0 0 1

matriz3_inv<-solve(matriz3, I)

matriz3_inv

## [,1] [,2] [,3]


## [1,] -1.375000 1.000000 -0.375000
## [2,] 6.584677 -4.677419 1.729839
## [3,] -8.092742 5.741935 -2.108871

Marco de datos “data frame”

El marco de datos o data frame es uno de los objetos más utilizados porque permite agrupar varios vectores con
información de diferente tipo (númerico, alfanúmerico o lógico) en un mismo objeto, la unica restricción es que
todos los elementos deben contener el mismo espacio o dimensión.
Para generar un marco de datos en R, se utiliará la función [Link], ejemplo:

datos<-[Link](edad,deporte,comic_fav)

datos

## edad deporte comic_fav


## 1 25 TRUE <NA>
## 2 40 TRUE Superman
## 3 39 FALSE Batman
## 4 46 FALSE <NA>
## 5 10 TRUE Shazam
## 6 11 TRUE Batman
## 7 14 TRUE Superman
## 8 23 FALSE <NA>
## 9 43 FALSE GreenLanter

¿Cómo se pueden extraer los elementos?

Para poder recuperar las variables (columnas) contenidas en el marco de datos (data frame), se pueden usar
difrentes operadores: $, corchetes simples [] o corcchetes dobles [[]].
Ejemplo:

datos$deporte # Con $

## [1] TRUE TRUE FALSE FALSE TRUE TRUE TRUE FALSE FALSE
CONTENTS 23

datos[,2] # Con corchete

## [1] TRUE TRUE FALSE FALSE TRUE TRUE TRUE FALSE FALSE

datos[["deporte"]] # Con doble corchete

## [1] TRUE TRUE FALSE FALSE TRUE TRUE TRUE FALSE FALSE

Listas

Las listas son otro tipo de objeto muy usado para almacenar objetos de diferente tipo, aquí ya no importa la
dimensión. Para poder crear una lista en R, solo basta con usar list(), ejemplo:

lista<-list(E1=datos, E2=matriz7, E3=vector1)

lista

## $E1
## edad deporte comic_fav
## 1 25 TRUE <NA>
## 2 40 TRUE Superman
## 3 39 FALSE Batman
## 4 46 FALSE <NA>
## 5 10 TRUE Shazam
## 6 11 TRUE Batman
## 7 14 TRUE Superman
## 8 23 FALSE <NA>
## 9 43 FALSE GreenLanter
##
## $E2
## [,1] [,2] [,3]
## [1,] 1784 3918 3816
## [2,] 3918 9650 11218
## [3,] 3816 11218 15864
##
## $E3
## [1] 34 56 22

De igual forma, para extraer elementos se hace uso de los mismo operadores que con el data frame:

lista$E1 #Con $

## edad deporte comic_fav


## 1 25 TRUE <NA>
## 2 40 TRUE Superman
## 3 39 FALSE Batman
## 4 46 FALSE <NA>
## 5 10 TRUE Shazam
## 6 11 TRUE Batman
## 7 14 TRUE Superman
## 8 23 FALSE <NA>
## 9 43 FALSE GreenLanter
24 CONTENTS

lista[2] #Con un solo []

## $E2
## [,1] [,2] [,3]
## [1,] 1784 3918 3816
## [2,] 3918 9650 11218
## [3,] 3816 11218 15864

lista[[3]] #Con dos [[]]

## [1] 34 56 22
Importación y exportación de bases de
datos

Carga de bases de datos desde archivos

En esta sección se mostrará cómo se pueden importar y exportar datos en el espacio de trabajo de R, mediante
algunas liberías tales como: foreing.
Es importante señalar que se pueden cargar datos de diferentes tipos de archivos o extensiones, pueden ser
varios, tales como: CSV; que es un tipo de datos separados por comas, o bien, también se pueden cargar datos
con el formato .DTA que refiere a un espacio de almacenamiento de Stata.
Además de las dos extensiones mencionadas, R permite realizar lecturas de extensiones .SAV pertenecientes a
una memoria de almacenamiento de datos de SPSS.
Y por último, tenemos un tipo de archivo que tiene la extensión de .DBF es el formato de datos utilizado original-
mente por el producto dBase, siendo en la actualidad el formato más comúnmente utilizado en DBMS (Sistema
de Gestión de Base de Datos), para computadoras personales.

Preparación para importar y exportar datos

Es importante tener en cuenta que hay muchas maneras de importar los datos en R, en las cuales RStudio también
juega un papel destacado, puesto a que con esta interfaz podemos cargar datos con el uso de la botonera en vez
de programar el código.
Para exportar datos, es necesario contar con un espacio o ruta definido, puesto a que se utilizarán funciones de
escritura donde se podrán almacenar los archivos exportados en diferentes formatos. Cabe recalcar que solo se
puede realizar mediante comando y no hay una función dentro de la botonera de RStudio que permita realizar
dicha acción.
Es por ello que a continuación se mostrarán las formas en las cuales podrás enrutar un espacio de trabajo (en
caso de no contar con un proyecto) o bien, se mostrará una forma sutíl en la cual se pueden cargar y exportar las
bases de una forma muy simple.

setwd()

La función setwd() permite enrutar un espacio de trabajo o una carpeta de donde se harán lectura de diversos
archivos que contenga este espacio, con ello podremos realizar carga de datos de una forma más útil.
Para realizar lo anterior es necesario conocer la ruta de la carpeta donde se contienen los archivos, en el caso
de Windows en muy sencillo podemos obtener dicha ruta, solo basta con dar click derecho y seleccionar “copiar
dirección”.
Posterior a ello, se utilizará el comando en R:

25
26 CONTENTS

Figure 27: Copiando ruta

Figure 28: *

setwd("D:/GEM/Materiales extra/Introducción a R/Bases")

#Se reemplaza \ por /

Con lo anterior ya tendremos la facilidad de utilizar los comandos base de “[Link]()” y solo tendremos que
poner dentro del parentesis el nombre del archivo con la extensión .csv.

Almacenando la base dentro de un proyecto

La otra manera de preparar todo, es mediante la creación de un proyecto, donde en este se contenga todas las
bases de datos a usar dentro de un análisis. Para esto se crea un proyecto nuevo, con una ruta y nombre en
especifico.
Posteriormente, se guardarán las bases dentro de la carpeta donde se encuentra el proyecto:
Una vez realizado lo anterior, cuando se este trabajando en RStudio, en la parte de “Files” se podrán visualizar
los archivos.
Y nuevamente para llamar a una base, solo se ocuparán los comandos pertenecientes al tipo de extensión que se
requieren.

Importación de datos

A continuación, se mostarán en diversos subtemas los tipos de archivo que se pueden cargar usando RStudio, así
mismo como el método de carga ya sea mediante un espacio previamente definido o con el uso de la botonera.

Comando [Link](“clipboard”)

Una manera muy sencilla de cargar una base de datos, es mediante el comando [Link](“clipboard”) con
este comando podemos (literalmente) copiar y pegar datos traidos de una hoja de excel, de una archivo de Stata
o SPSS.
Para realizar este paso, lo primero que se debe hacer es abrir el archivo de donde queremos sustraer los datos y
copiar todo lo que queremos ingresar a R (con todo y cabeceras):
Posteriormente de copiar los datos, se utiliza el comando:
CONTENTS 27

Figure 29: Proyecto nuevo

Figure 30: *

base<-[Link]("clipboard")

head(base)

## [1] Imagenes.
## <0 rows> (o 0- extensión [Link])

La desventaja de utilizar este tipo de comando es que en ocasiones (dependiendo del formato de los datos), tomará
los valores “pegados” como caracteres.

class(base$IM)

## [1] "NULL"

Figure 31: Carpeta del proyecto con las bases de datos

Figure 32: *
28 CONTENTS

Figure 33: Archivos

Figure 34: *

class(base$GM)

## [1] "NULL"

Lectura de archivos CSV.

Para cargar una base de datos con la extensión o formato CSV, se utiliza el comando [Link](“[Link]”) con
lo cual podremos cargar los datos de dicha base en esta extensión, sin embargo hay dos maneras de realizarla:
1) Generando el espacio de trabajo o enrutando y 2) Con el uso de la botonera.

Cargando bases CSV con el espacio previamente establecido

Para cargar una base de esta manera, se debe realizar lo que previamente se realizó en este documento (ya sea
usando setwd() o un proyecto con lo archivos a cargar), entonces, lo único que se debe realizar es simplemente
asignarle un nombre a la base y cargar el archivo:

base1<-[Link]("Bases/Marginació[Link]",
[Link] = F)
head(base1[1:3])

## CVE_ENT ENT CVE_MUN


## 1 1 Aguascalientes 1001
## 2 1 Aguascalientes 1001
## 3 1 Aguascalientes 1001
## 4 1 Aguascalientes 1001
## 5 1 Aguascalientes 1001
## 6 1 Aguascalientes 1001
CONTENTS 29

Figure 35: Copiando datos

Figure 36: *

class(base1)

## [1] "[Link]"

base2<-[Link]("Bases/[Link]")
head(base2[1:3])

## folioviv foliohog ubica_geo


## 1 100013605 1 1001
## 2 100013606 1 1001
## 3 100017801 1 1001
## 4 100017802 1 1001
## 5 100017803 1 1001
## 6 100017804 1 1001
30 CONTENTS

class(base2)

## [1] "[Link]"

Uso de botonera

Otra manera de cargar la base, es mediante la botonera de RStudio. Para ello, tendremos que irnos la parte de
“import Dataset” y dar click en “From text”:

Figure 37: Importando datos

Figure 38: *

Posterior a ello, aparecera un menu, en el cual vamos a buscar la ruta del archivo:

Figure 39: Importando datos

Figure 40: *

Una vez seleccionado el archivo y al ejecutar, se desplegará una ventana como la siguiente:

Lectura de archivos DTA.

Para cargar una base de datos con la extensión o formato DTA, se utiliza el comando read_dta(“[Link]”)
de la libería haven con lo cual podremos cargar los datos de dicha base en esta extensión, sin embargo hay dos
CONTENTS 31

Figure 41: Datos importados

Figure 42: *

maneras de realizarla: 1) Generando el espacio de trabajo o enrutando y 2) Con el uso de la botonera.

Cargando bases DTA con el espacio previamente establecido

Para cargar una base de esta manera, se debe realizar lo que previamente se realizó en este documento (ya sea
usando setwd() o un proyecto con lo archivos a cargar), entonces, lo único que se debe realizar es simplemente
asignarle un nombre a la base y cargar el archivo:

library(haven)

baseE<-read_dta("Bases/[Link]")
head(baseE[1:3])

## # A tibble: 6 x 3
## con1 edo muni
## <dbl> <dbl> <dbl>
## 1 1 2 2
## 2 2 2 2
## 3 3 2 2
## 4 4 2 2
## 5 5 2 2
## 6 6 2 2

class(baseE)

## [1] "tbl_df" "tbl" "[Link]"

base2d<-read_dta("Bases/[Link]")
head(base2d[1:3])

## # A tibble: 6 x 3
## folioviv foliohog ubica_geo
## <chr> <chr> <chr>
## 1 0100013605 1 01001
32 CONTENTS

## 2 0100013606 1 01001
## 3 0100017801 1 01001
## 4 0100017802 1 01001
## 5 0100017803 1 01001
## 6 0100017804 1 01001

class(base2d)

## [1] "tbl_df" "tbl" "[Link]"

Uso de botonera

Otra manera de cargar la base, es mediante la botonera de RStudio. Para ello, tendremos que irnos la parte de
“import Dataset” y dar click en “From Stata”:

Figure 43: Importando datos

Figure 44: *

Posterior a ello, aparecera un menu, en el cual vamos a buscar la ruta del archivo:

Figure 45: Importando datos

Figure 46: *

Una vez seleccionado el archivo y al ejecutar, se desplegará una ventana como la siguiente:
CONTENTS 33

Figure 47: Datos importados

Figure 48: *

Lectura de archivos SPSS.

Para cargar una base de datos con la extensión o formato DTA, se utiliza el comando read_sav(“[Link]”)
de la libería haven con lo cual podremos cargar los datos de dicha base en esta extensión, sin embargo hay dos
maneras de realizarla: 1) Generando el espacio de trabajo o enrutando y 2) Con el uso de la botonera.

Cargando bases SAV (SPSS) con el espacio previamente establecido

Para cargar una base de esta manera, se debe realizar lo que previamente se realizó en este documento (ya sea
usando setwd() o un proyecto con lo archivos a cargar), entonces, lo único que se debe realizar es simplemente
asignarle un nombre a la base y cargar el archivo:

library(haven)

baseS<-read_sav("Bases/[Link]")
head(baseS[1:3])

## # A tibble: 6 x 3
## con1 edo muni
## <dbl> <dbl> <dbl>
## 1 1 2 2
## 2 2 2 2
## 3 3 2 2
## 4 4 2 2
## 5 5 2 2
## 6 6 2 2

class(baseS)

## [1] "tbl_df" "tbl" "[Link]"


34 CONTENTS

base2s<-read_sav("Bases/[Link]")
head(base2s[1:3])

## # A tibble: 6 x 3
## folioviv foliohog ubica_geo
## <chr> <chr> <chr+lbl>
## 1 0100013605 1 01001 [Ags., Aguascalientes]
## 2 0100013606 1 01001 [Ags., Aguascalientes]
## 3 0100017801 1 01001 [Ags., Aguascalientes]
## 4 0100017802 1 01001 [Ags., Aguascalientes]
## 5 0100017803 1 01001 [Ags., Aguascalientes]
## 6 0100017804 1 01001 [Ags., Aguascalientes]

class(base2s)

## [1] "tbl_df" "tbl" "[Link]"

Uso de botonera

Otra manera de cargar la base, es mediante la botonera de RStudio. Para ello, tendremos que irnos la parte de
“import Dataset” y dar click en “From SPSS”:

Figure 49: Importando datos

Figure 50: *

Posterior a ello, aparecera un menu, en el cual vamos a buscar la ruta del archivo:
Una vez seleccionado el archivo y al ejecutar, se desplegará una ventana como la siguiente:

Lectura de archivos EXCEL.

Para la lecutra de archivos en Excel (extensión .xlsx), se debe contar con dos paqueterias: readxl y openxlsx.
Además se debe trabajar con un espacio definido, es decir, ya debe existir un enrutamiento de una carpeta donde
se contengan los archivos con la extensión xlsx.

Librería readxl.

Para ejemplificar el uso de readxl, se tiene que utilizar el comando read_excel(“nombre-xlsx”) y posteriormente
cargará la base de datos en este formato:
CONTENTS 35

Figure 51: Importando datos

Figure 52: *

# [Link]("readxl",
# dependencies=TRUE)

library(readxl)

basexlsx<-read_excel("Bases/[Link]")

head(basexlsx[1:3])

## # A tibble: 6 x 3
## folioviv foliohog ubica_geo
## <dbl> <dbl> <dbl>
## 1 100013605 1 1001
## 2 100013606 1 1001
## 3 100017801 1 1001
## 4 100017802 1 1001
## 5 100017803 1 1001
## 6 100017804 1 1001

class(basexlsx)

## [1] "tbl_df" "tbl" "[Link]"

Librería openxlsx.

Para ejemplificar el uso de openxlsx, se tiene que utilizar el comando read_excel(“nombre-xlsx”) y posterior-
mente cargará la base de datos en este formato:

# [Link]("readxl",
# dependencies=TRUE)

library(openxlsx)
36 CONTENTS

Figure 53: Datos importados

Figure 54: *

basexlsx2<-[Link]("Bases/Marginació[Link]")

head(basexlsx2[1:3])

## CVE_ENT ENT CVE_MUN


## 1 1 Aguascalientes 1001
## 2 1 Aguascalientes 1001
## 3 1 Aguascalientes 1001
## 4 1 Aguascalientes 1001
## 5 1 Aguascalientes 1001
## 6 1 Aguascalientes 1001

class(basexlsx2)

## [1] "[Link]"

Lectura de archivos DBF


Para poder leer esta clase de archivos (en DBF) es necesario contar con la paqueteria foreing, donde en ella se
puede usar el comando [Link] y en seguida se escribe el nombre del archivo en dicha extensión para poder
realizar la carga del mismo.

Cargando bases DBF con el espacio previamente establecido

Para cargar una base en dicha extensión, no se puede usar la botonera, por lo que la definición de un espacio
es la unica manera, para ello se debe realizar lo que previamente se realizó en este documento (ya sea usando
setwd() o un proyecto con lo archivos a cargar), entonces, lo único que se debe realizar es simplemente asignarle
un nombre a la base y cargar el archivo:

library(foreign)

base3e<-[Link]("Bases/[Link]")
head(base3e[1:3])
CONTENTS 37

## folioviv foliohog ubica_geo


## 1 0100013605 1 01001
## 2 0100013606 1 01001
## 3 0100017801 1 01001
## 4 0100017802 1 01001
## 5 0100017803 1 01001
## 6 0100017804 1 01001

class(base3e)

## [1] "[Link]"

Exportación de datos

En este tema, se mostrarán las formas en como se pueden exportar bases de datos en formato [Link] solo
en las siguientes extensiones: .csv, .dta, .sav y RData. Para elaborar este proceso, se requiere definir un espacio
de trabajo, donde se almacenen las bases exportadas, para ello se recomienda elaborar una carpeta dentro del
proyecto, por lo que con R podemos realizarlo de una manera sencilla.
Para crear una carpeta, basta y sobra con usar [Link] y con la / se indica el nombre de dicha carpeta, tal y
como se mostrará a continuación:

[Link]("Bases/bases_exportadas")

Ahora, para cambiar el directorio a esa carpeta y ahí almacenar las bases importadas, se utilizará setwd enseguida
de paste0 junto con getwd para copiar la ruta actual del proyecto y al ultimo solo se anexa /bases_exportadas y
como resultado todo lo que se exporte se encontrará en dicha carpeta.

Creado [Link] para la elaboración de ejemplos

Supongamos que hay una a encuesta de20 personas, donde las preguntas se encuentran en una escala likert
(datos de 1 a 5), la información de alamacena como vectores y al final se elabora un [Link] de dichos datos:

ID<-c(1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20)
Nombre<-c("Juan", "Carlos", "Susana", "Javier", "Valeria",
"Alexis", "Alfredo", "Erandy", "Melissa","Jose",
"Diana", "Alin", "Andrea", "Luis", "Raymundo",
"Samuel","Armando", "Magdalena", "Joselin", "Ray")
Pregunta1<-c(1,4,5,2,3,1,1,2,4,5,3,1,2,5,3,1,5,3,5,3)
Pregunta2<-c(4,4,5,2,3,1,2,5,2,3,1,4,2,5,3,1,2,5,4,3)
Pregunta3<-c(2,3,5,1,4,2,2,1,3,5,5,3,1,4,2,2,4,5,3,1)

Encuesta<-[Link](cbind(ID, Nombre, Pregunta1,


Pregunta2, Pregunta3))

Encuesta

## ID Nombre Pregunta1 Pregunta2 Pregunta3


## 1 1 Juan 1 4 2
## 2 2 Carlos 4 4 3
## 3 3 Susana 5 5 5
## 4 4 Javier 2 2 1
## 5 5 Valeria 3 3 4
38 CONTENTS

## 6 6 Alexis 1 1 2
## 7 7 Alfredo 1 2 2
## 8 8 Erandy 2 5 1
## 9 9 Melissa 4 2 3
## 10 10 Jose 5 3 5
## 11 11 Diana 3 1 5
## 12 12 Alin 1 4 3
## 13 13 Andrea 2 2 1
## 14 14 Luis 5 5 4
## 15 15 Raymundo 3 3 2
## 16 16 Samuel 1 1 2
## 17 17 Armando 5 2 4
## 18 18 Magdalena 3 5 5
## 19 19 Joselin 5 4 3
## 20 20 Ray 3 3 1

Exportar en salida .csv

Para elaborar dicha salida, se requiere un [Link] ó marco de datos, ya sea de alguno que se haya manipulado
previamente o bien, el vacio manual de datos y almacenados en dicho formato.
Una vez contado con lo anterior, se procede a exportar en csv con la función [Link], la cual solicita el nombre
del [Link] que se desea exportar y file para la salida con el nombre deseado del formato .csv, a continuación
se muestra dicho proceso.

[Link](
Encuesta,
file="D:/GEM/Materiales extra/Introducción a R/Bases/bases_exportadas/[Link]"
)

Exportar en salida .DTA

Para elaborar dicha salida, se requiere un [Link] ó marco de datos, ya sea de alguno que se haya manipulado
previamente o bien, el vacio manual de datos y almacenados en dicho formato.
Una vez contado con lo anterior, se procede a exportar en .DTA con la función write_dta de la libreria haven, la
cual solicita el nombre del [Link] que se desea exportar y la ruta para la salida con el nombre deseado del
formato .dta, a continuación se muestra dicho proceso.

library(haven)

write_dta(Encuesta,
"D:/GEM/Materiales extra/Introducción a R/Bases/bases_exportadas/[Link]")

Exportar en salida .SAV

Para elaborar dicha salida, se requiere un [Link] ó marco de datos, ya sea de alguno que se haya manipulado
previamente o bien, el vacio manual de datos y almacenados en dicho formato.
Una vez contado con lo anterior, se procede a exportar en .DTA con la función write_sav de la libreria haven, la
cual solicita el nombre del [Link] que se desea exportar y la ruta para la salida con el nombre deseado del
formato .sav, a continuación se muestra dicho proceso.
CONTENTS 39

library(haven)

write_sav(Encuesta,
"D:/GEM/Materiales extra/Introducción a R/Bases/bases_exportadas/[Link]")

Exportar en salida .RData

Para elaborar dicha salida, se requiere un [Link] ó marco de datos, ya sea de alguno que se haya manipulado
previamente o bien, el vacio manual de datos y almacenados en dicho formato.
Una vez contado con lo anterior, se procede a exportar en .DTA con la función save de la libreria base, la cual
solicita el nombre del [Link] que se desea exportar y la ruta para la salida con el nombre deseado del formato
.RData, a continuación se muestra dicho proceso.

save(Encuesta,
file="D:/GEM/Materiales extra/Introducción a R/Bases/bases_exportadas/[Link]")
40 CONTENTS
Fusión de bases

Para comenzar a realizar mapas, es importante contar con los datos necesarios para poder graficar cartografías
interactivas, es decir, se debe contar con la unión de una base datos a los elementos que componene la cartografía.
Sin embargo, para que esto sea posible es necesario entender en qué consiste la fusión de datos.
El concepto de fusión hace referencia a la unión de dos o más elementos en un solo, entonces, partiendo de este
concepto se debe tener claro que la fusión de bases consolidará una sola base que contenga toda la información
que se esta enlazando.
En R, existen diferentes formas de elaborar estas fusiones mediante el uso de las librerías base y dplyr, por lo
que a continuación se explicarán las maneras de elaborar este proceso teniendo en cuenta que existen varios
tipos de fusión.
Antes de comenzar con los tipos de unión, se trabajará un caso hipotetico creando dos data frame (marco de
datos) elaborados con R.

library(tidyverse)

Trabajador_id<-1:20

Nombre_trab<-c("Alexis", "Susana",
"Alfredo", "Diana",
"Marco", "Jaime",
"Alexa","Kate",
"Jose", "Jess",
"Carlos", "Karina",
"Dian", "Evelyn",
"Joss", "Bryan",
"Cesar", "Monica",
"Fernanda", "María")

Salario_trab<-round(rnorm(20, mean=7500, sd=580))

Edad_trab<-round(rnorm(20, mean=40, sd=5))

Puesto_trab<-c(rep("EJE",5), "ADM", "SUP",


"DIR", "SUB", rep("TEC", 11))

data1<-[Link](Clave=Trabajador_id[1:15],
Nombre=Nombre_trab[1:15],
Salario=Salario_trab[1:15])

data2<-[Link](Clave=Trabajador_id[-7],
Nombre=Nombre_trab[-7],
Edad=Edad_trab[-7],
Puesto=Puesto_trab[-7])

41
42 CONTENTS

Table 1: Base 1

Clave Nombre Salario


1 Alexis 6841
2 Susana 8200
3 Alfredo 7317
4 Diana 6651
5 Marco 7881
6 Jaime 7513
7 Alexa 7307
8 Kate 7567
9 Jose 7562
10 Jess 6697
11 Carlos 8173
12 Karina 6928
13 Dian 7573
14 Evelyn 6891
15 Joss 8380

Table 2: Base 2

Clave Nombre Edad Puesto


1 Alexis 43 EJE
2 Susana 38 EJE
3 Alfredo 40 EJE
4 Diana 36 EJE
5 Marco 43 EJE
6 Jaime 40 ADM
8 Kate 39 DIR
9 Jose 44 SUB
10 Jess 36 TEC
11 Carlos 38 TEC
12 Karina 42 TEC
13 Dian 40 TEC
14 Evelyn 43 TEC
15 Joss 46 TEC
16 Bryan 49 TEC
17 Cesar 26 TEC
18 Monica 42 TEC
19 Fernanda 35 TEC
20 María 49 TEC
CONTENTS 43

Inner join (Intersección)

La intersección o inner join, es la unión de conjuntos de datos más habitual que se realiza e la fusión de datos.
El proceso consiste en unir dos bases de datos (en formato data frame o marco de datos) que contengan los
elementos comunes de ambos, a continuación se muestra un ejemplo visual:

Figure 55: Intersección

Usando merge

Para realizar esta fusión, se puede utilizar el comando merge de la librería base, solo se debe declarar las bases
como x e y además del argumento by y se seleccionan las columnas enlace donde se realiza la intersección de
los datos. A continuación se muestra el ejemplo:

Base_inner<-merge(x=data1,
y=data2,
by=c("Clave", "Nombre"))

Usando dplyr

Con la librería de dplyr se puede realizar fusiones de bases de datos, para el caso de inner join se debe utilizar
la función que tiene por porpio nombre este tipo de fusión, el argumento se basa en colocar las bases según la
posición que se desea tomar y después con el operador by se indica la columna llave para unir las bases. A
continuación se muestra un ejemplo:

Dplyr_inner<-data1%>%
inner_join(data2, by=c("Clave", "Nombre"))
44 CONTENTS

Table 3: Inner con merge

Clave Nombre Salario Edad Puesto


1 Alexis 6841 43 EJE
10 Jess 6697 36 TEC
11 Carlos 8173 38 TEC
12 Karina 6928 42 TEC
13 Dian 7573 40 TEC
14 Evelyn 6891 43 TEC
15 Joss 8380 46 TEC
2 Susana 8200 38 EJE
3 Alfredo 7317 40 EJE
4 Diana 6651 36 EJE
5 Marco 7881 43 EJE
6 Jaime 7513 40 ADM
8 Kate 7567 39 DIR
9 Jose 7562 44 SUB

Table 4: Inner con dplyr

Clave Nombre Salario Edad Puesto


1 Alexis 6841 43 EJE
2 Susana 8200 38 EJE
3 Alfredo 7317 40 EJE
4 Diana 6651 36 EJE
5 Marco 7881 43 EJE
6 Jaime 7513 40 ADM
8 Kate 7567 39 DIR
9 Jose 7562 44 SUB
10 Jess 6697 36 TEC
11 Carlos 8173 38 TEC
12 Karina 6928 42 TEC
13 Dian 7573 40 TEC
14 Evelyn 6891 43 TEC
15 Joss 8380 46 TEC
CONTENTS 45

Full Join (Unión completa)

Consiste en la unión completa, puesto a que combina todas las colunas de ambas bases o conjuntos de datos en
un solo marco de datos. En esta unión se incluyen todos los elementos.

Figure 56: Unión completa

Usando merge

Para realizar dicha unión de bases con el comando merge basta con agregar la instrucción all=TRUE para que
una en su totalidad las bases.

Base_full<-merge(x=data1,
y=data2,
all=TRUE)

Usando dplyr

Para realizar la fusión con dplyr es necesario usar la instrucción full_join y solo agregar la base a fusionar, tal
como se muestra en el siguiente ejemplo:

Dplyr_full<-data1%>%
full_join(data2)

Left join (Unir a la izquierda)

La unión a la izquierda consiste en unir todas las filas del primer merco de datos con los valores correspondientes
del segundo, es decir, que solo se busca unir con los elementos equivalentes de X con respecto a Y, tal y como
se muestra en la siguiente imagen.
46 CONTENTS

Table 5: Full con dplyr

Clave Nombre Salario Edad Puesto


1 Alexis 6841 43 EJE
2 Susana 8200 38 EJE
3 Alfredo 7317 40 EJE
4 Diana 6651 36 EJE
5 Marco 7881 43 EJE
6 Jaime 7513 40 ADM
7 Alexa 7307 NA NA
8 Kate 7567 39 DIR
9 Jose 7562 44 SUB
10 Jess 6697 36 TEC
11 Carlos 8173 38 TEC
12 Karina 6928 42 TEC
13 Dian 7573 40 TEC
14 Evelyn 6891 43 TEC
15 Joss 8380 46 TEC
16 Bryan NA 49 TEC
17 Cesar NA 26 TEC
18 Monica NA 42 TEC
19 Fernanda NA 35 TEC
20 María NA 49 TEC

Table 6: Full con dplyr

Clave Nombre Salario Edad Puesto


1 Alexis 6841 43 EJE
2 Susana 8200 38 EJE
3 Alfredo 7317 40 EJE
4 Diana 6651 36 EJE
5 Marco 7881 43 EJE
6 Jaime 7513 40 ADM
7 Alexa 7307 NA NA
8 Kate 7567 39 DIR
9 Jose 7562 44 SUB
10 Jess 6697 36 TEC
11 Carlos 8173 38 TEC
12 Karina 6928 42 TEC
13 Dian 7573 40 TEC
14 Evelyn 6891 43 TEC
15 Joss 8380 46 TEC
16 Bryan NA 49 TEC
17 Cesar NA 26 TEC
18 Monica NA 42 TEC
19 Fernanda NA 35 TEC
20 María NA 49 TEC
CONTENTS 47

Figure 57: Unión a la izquierda

Table 7: Left con merge

Clave Nombre Salario Edad Puesto


1 Alexis 6841 43 EJE
2 Susana 8200 38 EJE
3 Alfredo 7317 40 EJE
4 Diana 6651 36 EJE
5 Marco 7881 43 EJE
6 Jaime 7513 40 ADM
7 Alexa 7307 NA NA
8 Kate 7567 39 DIR
9 Jose 7562 44 SUB
10 Jess 6697 36 TEC
11 Carlos 8173 38 TEC
12 Karina 6928 42 TEC
13 Dian 7573 40 TEC
14 Evelyn 6891 43 TEC
15 Joss 8380 46 TEC

Usando merge

Con la librería base y la función merge se puede elaborar la unión a la izquierda, argumentando las bases en X e
Y, solo se agrega la instrucción de all.x para indicar que la fusión será a la izquierda:

Base_left<-merge(x=data1,
y=data2,
all.x = TRUE)

Usando dplyr

Para realizar el tipo de unión o fusión a la izquierda con dplyr, solo basta con utilizar la función left_join y dentro
de la función se pone la base Y, tal y como se muestra a continuación:
48 CONTENTS

Table 8: Left con dplyr

Clave Nombre Salario Edad Puesto


1 Alexis 6841 43 EJE
2 Susana 8200 38 EJE
3 Alfredo 7317 40 EJE
4 Diana 6651 36 EJE
5 Marco 7881 43 EJE
6 Jaime 7513 40 ADM
7 Alexa 7307 NA NA
8 Kate 7567 39 DIR
9 Jose 7562 44 SUB
10 Jess 6697 36 TEC
11 Carlos 8173 38 TEC
12 Karina 6928 42 TEC
13 Dian 7573 40 TEC
14 Evelyn 6891 43 TEC
15 Joss 8380 46 TEC

Dplyr_left<-data1 %>%
left_join(data2)

Right join (Unir a la derecha)

Es lo opuesto al left join pues en este caso, la combinación consiste en unir todas las filas del segundo marco de
datos con las correspondientes del primero, es decir, que solo se busca unir con los elementos equivalentes de Y
con respecto a X, tal y como se muestra en la siguiente imagen.

Figure 58: Unión a la derecha


CONTENTS 49

Table 9: Right con merge

Clave Nombre Salario Edad Puesto


1 Alexis 6841 43 EJE
2 Susana 8200 38 EJE
3 Alfredo 7317 40 EJE
4 Diana 6651 36 EJE
5 Marco 7881 43 EJE
6 Jaime 7513 40 ADM
8 Kate 7567 39 DIR
9 Jose 7562 44 SUB
10 Jess 6697 36 TEC
11 Carlos 8173 38 TEC
12 Karina 6928 42 TEC
13 Dian 7573 40 TEC
14 Evelyn 6891 43 TEC
15 Joss 8380 46 TEC
16 Bryan NA 49 TEC
17 Cesar NA 26 TEC
18 Monica NA 42 TEC
19 Fernanda NA 35 TEC
20 María NA 49 TEC

Usando merge

Con la librería base y la función merge se puede elaborar la unión a la izquierda, argumentando las bases en Y y
X, solo se agrega la instrucción de all.y para indicar que la fusión será a la derecha:

Base_right<-merge(x=data1,
y=data2,
all.y = TRUE)

Usando dplyr

Para realizar el tipo de unión o fusión a la izquierda con dplyr, solo basta con utilizar la función right_join y dentro
de la función se pone la base Y, tal y como se muestra a continuación:

Dplyr_right<-data1 %>%
right_join(data2)
50 CONTENTS

Table 10: Right con dplyr

Clave Nombre Salario Edad Puesto


1 Alexis 6841 43 EJE
2 Susana 8200 38 EJE
3 Alfredo 7317 40 EJE
4 Diana 6651 36 EJE
5 Marco 7881 43 EJE
6 Jaime 7513 40 ADM
8 Kate 7567 39 DIR
9 Jose 7562 44 SUB
10 Jess 6697 36 TEC
11 Carlos 8173 38 TEC
12 Karina 6928 42 TEC
13 Dian 7573 40 TEC
14 Evelyn 6891 43 TEC
15 Joss 8380 46 TEC
16 Bryan NA 49 TEC
17 Cesar NA 26 TEC
18 Monica NA 42 TEC
19 Fernanda NA 35 TEC
20 María NA 49 TEC
Mapas

¿Qué es un archivo .shp?

Un shapefile es un formato sencillo y no topológico que se utiliza para almacenar la ubicación geométrica y la
información de atributos de las entidades geográficas. Las entidades geográficas de un shapefile se pueden
representar por medio de puntos, líneas o polígonos (áreas). El espacio de trabajo que contiene los shapefiles
también pueden incluir tablas del dBASE, que pueden almacenar atributos adicionales que se pueden vincular a
las entidades de un shapefile. (ARCGIS, 2016)
Con base a la definción que proporciona ARCGIS, se puede concluir que un archivo shapefile (.shp) contiene la in-
formación geográfica (no topológica) de una entidad y que esta puede presentar atributos que pueden relacionarse
con archivos .csv, .txt o .tab.

¿Cómo importar un archivo .shp a R?

En R, para poder importar un shapefile (.shp), se puede hacer mediante dos librerías, las cuales son: rgdal y sf,
posteriormente se cargan las instrucciones de readOGR y read_sf, a continuación se muestra un ejemplo con el
mapa de los Estados Unidos Mexicanos por entidades:

library(easypackages)

librerias<-c("sf")

libraries(librerias)

mapa_mex2<-st_read("Mapas/México_Estados.shp")

## Reading layer `México_Estados' from data source


## `D:\GEM\Materiales extra\Introducción a R\Mapas\México_Estados.shp'
## using driver `ESRI Shapefile'
## Simple feature collection with 32 features and 2 fields
## Geometry type: MULTIPOLYGON
## Dimension: XY
## Bounding box: xmin: -117.1224 ymin: 14.55055 xmax: -86.735 ymax: 32.72081
## Geodetic CRS: WGS 84

Gráficando cartografía

Para elaborar el ploteo o gráfico de la cartografía, se puede hacer mediante un plot de la librería base, con el uso
de ggplot y la geometría de sf y con leaflet pero este último no visuliza como imagen, solo se puede apreciar en
Viewer por lo que se debe consultar en RStudio. A continuación se mostrarán unos ejemplos.

51
52 CONTENTS

• Mediante plot: Solo se necesita utilizar plot seguido del nombre de la cartografía, en caso de usar el objeto
importado con rgdal. Para el mapa con el shapefile importado con sf se debe especificar geometry, ya que
de no ser así hará dos mapas según los elementos de los datos que contiene toda la cartografía.

plot(mapa_mex2$geometry)

• Mediante ggplot2: Para el caso de ggplot2 solo se puede utilizar la cartografía importada mediante la pa-
quetería sf y usando la capa de geometría geom_sf, por lo que se podrá visualizar el trazo de la siguiente
manera.

mapa_mex2 %>%
ggplot()+
geom_sf()
CONTENTS 53

30°N

25°N

20°N

15°N

115°W 110°W 105°W 100°W 95°W 90°W

• Mediante leaflet: Es una mapa interactivo con mucha presencia, la desventaja es que solo se puede visualizar
en la pestaña de Viewer dentro de RStudio, por lo que no se puede visualizar como imagen. Para elaborar
este mapa, se requiere seguir las siguientes instrucciones y ocupando la catografía importada mediante
rgdal.

# library(leaflet)

# pal<-colorNumeric(palette = "YlGnBu",
# domain = mapa_mex1$AREA)

# leaflet(mapa_mex1) %>%
# addProviderTiles("[Link]") %>%
# addPolygons(color = ~pal(mapa_mex1$AREA),
# stroke = FALSE, fillOpacity = 0.6)

Realiazando mapas temáticos

Para realizar mapas temáticos, se debe de contemplar lo siguiente:

• Contar con una base de datos con la que se pueda enlazar o unir mediante merge o dplyr.
• Tener conocimientos de fusiones.
• Mapejar correctamente ggplot y plot

Para estos mapas tematicos, se utilizará la encuesta de ingresos y gastos en los hogares del 2020 que realiza el
INEGI, con la finalidad de realizar mapas temáticos de indices económicos de México.
54 CONTENTS

A continuación se muestra la construcción de un data frame que contiene el nivel de ingreso promedio por entidad
federativa:

• Se seleccionan variables de interés y se transforma el folioviv en formato númerico mediante una previa
transformación en formato caracteres.

library(foreign)

enigh<-[Link]("Bases/[Link]")

base<-enigh %>%
select(folioviv, foliohog, ubica_geo, factor,
sexo_jefe, educa_jefe, edad_jefe, hombres,
mujeres, ing_cor, ingtrab,trabajo,
negocio, otros_trab,rentas,utilidad,
arrenda, transfer, jubilacion, becas,
donativos, remesas, bene_gob,transf_hog,
transf_hog, estim_alqu, otros_ing, upm,
est_dis, trans_inst)

base$folioviv<-[Link](base$folioviv)
base$folioviv<-[Link](base$folioviv)

• Posteriormente se substraen las primeras dos posiciones de los elementos de folioviv para obtener la clave
de entidad, después se utiliza case_when para poder atribuirle un nombre de estado según la clave de
entidad.

base<-base %>%
mutate(clave_ent= case_when(nchar(folioviv)==9 ~ substr(folioviv,
1,1),
TRUE ~substr(folioviv,1,2)))
## Nombrando folio/entidad

### Método 1: Usando case_when


base<-base %>%
mutate(nombre_ent= case_when(clave_ent==1 ~ "Aguascalientes",
clave_ent==2 ~ "Baja California",
clave_ent==3 ~ "Baja California Sur",
clave_ent==4 ~ "Campeche",
clave_ent==5 ~ "Coahuila",
clave_ent==6 ~ "Colima",
clave_ent==7 ~ "Chiapas",
clave_ent==8 ~ "Chihuahua",
clave_ent==9 ~ "Distrito Federal",
clave_ent==10 ~ "Durango",
clave_ent==11 ~ "Guanajuato",
clave_ent==12 ~ "Guerrero",
clave_ent==13 ~ "Hidalgo",
clave_ent==14 ~ "Jalisco",
clave_ent==15 ~ "México",
clave_ent==16 ~ "Michoacán",
clave_ent==17 ~ "Morelos",
clave_ent==18 ~ "Nayarit",
clave_ent==19 ~ "Nuevo León",
clave_ent==20 ~ "Oaxaca",
CONTENTS 55

clave_ent==21 ~ "Puebla",
clave_ent==22 ~ "Querétaro",
clave_ent==23 ~ "Quintana Roo",
clave_ent==24 ~ "San Luis Potosí",
clave_ent==25 ~ "Sinaloa",
clave_ent==26 ~ "Sonora",
clave_ent==27 ~ "Tabasco",
clave_ent==28 ~ "Tamaulipas",
clave_ent==29 ~ "Tlaxcala",
clave_ent==30 ~ "Veracruz",
clave_ent==31 ~ "Yucatán",
clave_ent==32 ~ "Zacatecas"))

• Se calcula el ingreso promedio por estado, utilizando un agrupamiento con group_by y se utiliza el nombre
de las entidades, posterior se utiliza summarise y dentro de este se coloca el calculo de la media incluyendo
el factor de expansión (para entender qué es un factor de expansión se recomienda leer la metodología de
la ENIGH 2020).

Ingreso_estado <- base %>%


group_by(nombre_ent) %>%
summarise(media=sum(ing_cor*factor)/sum(factor))

names(Ingreso_estado)=c("Entidad", "Ingreso_promedio")

• El resultado en tabla es el siguiente:

kable(Ingreso_estado,
caption = "Ingreso promedio trimestral estatal")

Unión de mapa con base

En este paso, se realiza uniones mediante left join en donde la variable X es mapa_mex2 que contiene todos los
datos del mapa y la variable Y es Ingreso_estado que es el calculo del ingreso promedio trimestral para cada
estado. A continuación se muestra la unión:

mex_map_ing<-mapa_mex2 %>%
left_join(Ingreso_estado,
by=c("ESTADO"="Entidad"))

Graficando mapa interactivo con plot

Posterior a ello, se puede realizar el utilizando la librería base y plot, pero dentro de la base a usar, se debe usar
el nombre de la fusión de cartografía y base junto con [] donde se escribe el nombre de la columna temática (en
este caso Ingreso_promedio).
A continuación se muestra un ejemplo:

plot(mex_map_ing[,"Ingreso_promedio"],
breaks="jenks",
main="Nivel de ingresos por entidad")
56 CONTENTS

Table 11: Ingreso promedio trimestral estatal

Entidad Ingreso_promedio
Aguascalientes 58303.33
Baja California 67820.56
Baja California Sur 64265.86
Campeche 47275.79
Chiapas 29167.59
Chihuahua 60263.33
Coahuila 55670.65
Colima 56297.28
Distrito Federal 67356.70
Durango 50361.29
Guanajuato 48387.71
Guerrero 32515.69
Hidalgo 40090.31
Jalisco 55746.31
Michoacán 46410.41
Morelos 42041.24
México 49620.10
Nayarit 51964.79
Nuevo León 72930.71
Oaxaca 36263.22
Puebla 39616.45
Querétaro 60435.02
Quintana Roo 46379.61
San Luis Potosí 47819.39
Sinaloa 55834.40
Sonora 61358.11
Tabasco 41665.47
Tamaulipas 49688.16
Tlaxcala 37918.64
Veracruz 35126.25
Yucatán 46765.71
Zacatecas 44405.22
CONTENTS 57

Nivel de ingresos por entidad

70000
50000
30000
La librería base, automáticamente asignará un color o una escala de colores según la temática, entonces, para
poder mejorar la paleta se utiizará nbreaks para poder indicar que son 32 datos diferentes y con pal argumentando
con [Link](32) se la da la instrucción que ocupe una escala de iluminado para los 32 datos (que en este caso
son las entidades), el gráfico queda de la siguiente manera:

plot(mex_map_ing[,"Ingreso_promedio"],
breaks="jenks",
nbreaks=32,
pal=[Link](32),
main="Nivel de ingresos por entidad")
58 CONTENTS

Nivel de ingresos por entidad

70000
50000
30000
Graficando mapa interactivo con ggplot2

Para elaborar el mapa temático mediante ggplot2, se requiere contar con la base unida entre la catografía y los
datos manipulados. Posteriormente al utilizar ggplot y la geometría geom_sf se escribe dentro del trazo el argu-
mento de aes y en este se da la instrucción de fill=Nombre de la variable que en este caso es ingreso_promedio.
A continuación se muestra un ejemplo:

mex_map_ing %>%
ggplot()+
geom_sf(aes(fill=Ingreso_promedio))
CONTENTS 59

30°N

Ingreso_promedio
70000
25°N
60000

50000

40000
20°N
30000

15°N

115°W 110°W 105°W 100°W 95°W 90°W

Insertando títulos

Ahora, si se desea declarar un título, subtítulo y pie de gráfico se puede realizar mediante la capa de labs donde
se tienen funciones como title, subtitle y caption que permiten agregar dichos textos al gráfico. Además de ello,
se puede manipular el color de las lineas divisoras para cada entidad o estado, aplicando color, linetype y lwd qie
permitirán manipular dicho trazo. A continuación se muestra un ejemplo:

mex_map_ing %>%
ggplot()+
geom_sf(aes(fill=Ingreso_promedio),
color="white",
linetype=1,
lwd=0.25)+
labs(title="Ingreso promedio trimestral",
subtitle="Mapa a nivel Estatal",
caption="Elaboración propia con datos de la ENIGH 2020")
60 CONTENTS

Ingreso promedio trimestral


Mapa a nivel Estatal

30°N

Ingreso_promedio
70000
25°N
60000

50000

40000
20°N
30000

15°N

115°W 110°W 105°W 100°W 95°W 90°W


Elaboración propia con datos de la ENIGH 2020

Asignando paleta de colores

Si se busca cambiar el coloreo que por predeterminado asigna geom_sf, se necesita hacer una serie de config-
uraciones para poder lograr dicho objetivo. Para el siguiente ejemplo, se manipula scale_fill_viridis_c la cual es
una paleta de colores donde en option se puede asignar diferentes paletas según la letra, las cuales son:

• A: Magma.

• B: Inferno.

• C: Plasma.

• D: Viridis.

• E: Cividis.

A continuación se muestra el resultado.

mex_map_ing %>%
ggplot()+
geom_sf(aes(fill=Ingreso_promedio),
color=NA)+
scale_fill_viridis_c(option="D")+
labs(title="Ingreso promedio trimestral",
subtitle="Mapa a nivel Estatal",
caption="Elaboración propia con datos de la ENIGH 2020")
CONTENTS 61

Ingreso promedio trimestral


Mapa a nivel Estatal

30°N

Ingreso_promedio
70000
25°N
60000

50000

40000
20°N
30000

15°N

115°W 110°W 105°W 100°W 95°W 90°W


Elaboración propia con datos de la ENIGH 2020

Manipulación avanzada para mapas

Para poder elaborar un mapa con mucho mayor detalle, se deben realizar una serie de pasos un poco largos. Estas
etapas consisten en ir generando pequeñas escalas dentro de la variable temática, para que se pueda elaborar
coloreos mediante intervalos.
Entonces como una primera etapa se va a genera un objeto en el que se contenga saltos de escala correspon-
dientes al vector temático. En este caso como se tienen promedios trimestales y las cifras estan en miles, las
escalas tendrán que ser iguales a los datos. Posteriormente, se crea una nueva variable dentro de la unión de la
cartografía y lo datos temáticos. A continuación se muestra el ejemplo:

br<-c(20,25,30,35,40,45,
50,55,60,65,75,80)*1000

mex_map_ing<-mex_map_ing %>%
mutate(ingreso_prom=cut(Ingreso_promedio,
breaks = br,
[Link]=5))
mex_map_ing

## Simple feature collection with 32 features and 4 fields


## Geometry type: MULTIPOLYGON
## Dimension: XY
## Bounding box: xmin: -117.1224 ymin: 14.55055 xmax: -86.735 ymax: 32.72081
## Geodetic CRS: WGS 84
## First 10 features:
## CODIGO ESTADO Ingreso_promedio geometry
62 CONTENTS

## 1 MX02 Baja California 67820.56 MULTIPOLYGON (((-113.1397 2...


## 2 MX03 Baja California Sur 64265.86 MULTIPOLYGON (((-111.2061 2...
## 3 MX18 Nayarit 51964.79 MULTIPOLYGON (((-106.6211 2...
## 4 MX14 Jalisco 55746.31 MULTIPOLYGON (((-101.5249 2...
## 5 MX01 Aguascalientes 58303.33 MULTIPOLYGON (((-101.8462 2...
## 6 MX11 Guanajuato 48387.71 MULTIPOLYGON (((-100.2803 2...
## 7 MX22 Querétaro 60435.02 MULTIPOLYGON (((-100.1228 1...
## 8 MX13 Hidalgo 40090.31 MULTIPOLYGON (((-98.65941 1...
## 9 MX16 Michoacán 46410.41 MULTIPOLYGON (((-103.4796 1...
## 10 MX15 México 49620.10 MULTIPOLYGON (((-98.62798 1...
## ingreso_prom
## 1 (65000,75000]
## 2 (60000,65000]
## 3 (50000,55000]
## 4 (55000,60000]
## 5 (55000,60000]
## 6 (45000,50000]
## 7 (60000,65000]
## 8 (40000,45000]
## 9 (45000,50000]
## 10 (45000,50000]

Posteriormente se creará un objeto que tiene por nombre labs y label_plot el cual corresponderá a las etiquetas
que irán en la leyenda del mapa, a continuación se muestra el ejemplo:

labs<-c(20,25,30,35,40,45
,50,55,60,65,75,80)

label_plot<-paste0("(",labs[1:11],
"k-", labs[2:12],"k]")

Ahora, una vez generadas las etiquetas de la leyenda, se procede a realizar una peleta de colores, la cual se genera
mediante [Link]() dentro del argumento va el número de escalas (n=12), el tipo de paleta (en el ejemplo se
utilizará “Berlin”), rev como verdadero y un grado de transparencia del 30% (alpha=0.7).
A continuación se muestra el ejemplo:

paleta<-[Link](12, "Berlin",
rev=TRUE, alpha=0.7)

Se procede a realizar el mapa con la elaboración de los intervalos, por lo que en fill debe ir el nombre de la variable
que contienen los limites, en este caso será ingreso_prom. Después, se utiliza dentro de labs la instrucción de fill
para asignar el nombre a la leyenda.
Lo complicado esta dentro de scale_fill_manual pues se realizan varias instrucciones, dentro de las cuales value
es igual al nombre asignado a la paleta creada para que colore el mapa segun los colores especificados. Después
se indica que el drop debe ser falso, si hay valores na se pide mediante [Link] que sean de color gris. Para
la parte de las etiquetas de la leyenda, se utiliza la instrucción label y se asigna el valor correspondiente de
label_plot.
Ahora, para manipular la leyenda se utiliza la instrucción de guide dentro de scale_fill_manual y en ella se
arguementa la posición con direction, nrow para el número de filas de la leyenda (que será 2) y la posición de la
leyenda dentro del gráfico la cual se ordena mediante [Link].
Por útlimo, se agrega el tema de ggplot (theme_void) para eliminar la maya o el grid y con theme se argumenta
el tamaño de letra y estilo del pie de gráfico con [Link].
A continuación se muestra el resultado de toda esta manipulación:
CONTENTS 63

mex_map_ing %>%
ggplot()+
geom_sf(aes(fill=ingreso_prom),
color="white")+
labs(title="Ingreso promedio trimestral",
subtitle="Mapa a nivel Estatal",
caption="Elaboración propia con datos de la ENIGH 2020",
fill= "MXN")+
scale_fill_manual(values = paleta,
drop=FALSE,
[Link] = "grey80",
label=label_plot,
guide=guide_legend(direction = "horizontal",
nrow=2,
[Link] = "bottom"))+
theme_void()+
theme([Link] = element_text(size=10, face="italic"),
[Link] = "bottom")

Ingreso promedio trimestral


Mapa a nivel Estatal

(20k−25k] (30k−35k] (40k−45k] (50k−55k] (60k−65k] (75k−80k]


MXN

(25k−30k] (35k−40k] (45k−50k] (55k−60k] (65k−75k]


Elaboración propia con datos de la ENIGH 2020

Ejemplo práctico: Trazando mapa del PIB por entidad

En este ejemplo se realizará el mapa temático del producto interno bruto por entidad federativa según las estima-
ciones del INEGI para el año 2020. En el archivo PIB_entidad_2020 se encuentran los datos dentro de la hoja
2020, como es un archivo .xlsx se requiere de readxl para poder dar lectura a los datos.
64 CONTENTS

library(readxl)

PIB_entidad<-read_excel("Bases/PIB_entidad_2020.xlsx",
sheet = "2020")

Posteriormente de la importación, se procede a manipular la clave de entidad mediante case_when y las her-
ramientas de dplyr para asignar los nombres de las entidades iguales a las del archivo .shp. Además se crea una
variable que tiene por nombre PIB_mm donde se hace una conversión a escala de milies de millones de pesos.

PIB_entidad<-PIB_entidad %>%
mutate(Entidad=case_when(Clave_ent==1 ~ "Aguascalientes",
Clave_ent==2 ~ "Baja California",
Clave_ent==3 ~ "Baja California Sur",
Clave_ent==4 ~ "Campeche",
Clave_ent==5 ~ "Coahuila",
Clave_ent==6 ~ "Colima",
Clave_ent==7 ~ "Chiapas",
Clave_ent==8 ~ "Chihuahua",
Clave_ent==9 ~ "Distrito Federal",
Clave_ent==10 ~ "Durango",
Clave_ent==11 ~ "Guanajuato",
Clave_ent==12 ~ "Guerrero",
Clave_ent==13 ~ "Hidalgo",
Clave_ent==14 ~ "Jalisco",
Clave_ent==15 ~ "México",
Clave_ent==16 ~ "Michoacán",
Clave_ent==17 ~ "Morelos",
Clave_ent==18 ~ "Nayarit",
Clave_ent==19 ~ "Nuevo León",
Clave_ent==20 ~ "Oaxaca",
Clave_ent==21 ~ "Puebla",
Clave_ent==22 ~ "Querétaro",
Clave_ent==23 ~ "Quintana Roo",
Clave_ent==24 ~ "San Luis Potosí",
Clave_ent==25 ~ "Sinaloa",
Clave_ent==26 ~ "Sonora",
Clave_ent==27 ~ "Tabasco",
Clave_ent==28 ~ "Tamaulipas",
Clave_ent==29 ~ "Tlaxcala",
Clave_ent==30 ~ "Veracruz",
Clave_ent==31 ~ "Yucatán",
Clave_ent==32 ~ "Zacatecas"),
PIB_mm=PIB/1000)

Despúes, se procede a unir las bases de datos con la catografía para poder realizar el mapa temático.

mex_map_PIB_ent<-mapa_mex2 %>%
left_join(PIB_entidad,
by=c("ESTADO"="Entidad"))

Una vez elaborado lo anterior, se procede a realizar un primer gráfico sencillo con la finalidad de corroborar que
la fusión se hizo correctamente.
CONTENTS 65

options(scipen = 999)

mex_map_PIB_ent %>%
ggplot()+
geom_sf(aes(fill=PIB_mm),
color=NA)+
scale_fill_viridis_c(option="D")+
labs(title="Producto Interno Bruto 2020",
subtitle="Mapa a nivel Estatal",
caption="Elaboración propia con datos de la ENIGH 2020")

Producto Interno Bruto 2020


Mapa a nivel Estatal

30°N

PIB_mm

25°N
2000

1000

20°N

15°N

115°W 110°W 105°W 100°W 95°W 90°W


Elaboración propia con datos de la ENIGH 2020

Una vez comprobado que la fusión fue correcta, se procede a manipular los intervalos para la elaboración de un
mapa mucho más trabajado, tal y como se mostro en manipulación avanzada.

br1<-c(0,25,50,75,100,125,150,
175,200,225,250,300)*10

mex_map_PIB_ent<-mex_map_PIB_ent %>%
mutate(pib_int=cut(PIB_mm,
breaks = br1,
[Link]=5))
mex_map_PIB_ent

## Simple feature collection with 32 features and 6 fields


## Geometry type: MULTIPOLYGON
## Dimension: XY
## Bounding box: xmin: -117.1224 ymin: 14.55055 xmax: -86.735 ymax: 32.72081
## Geodetic CRS: WGS 84
66 CONTENTS

## First 10 features:
## CODIGO ESTADO Clave_ent PIB PIB_mm
## 1 MX02 Baja California 2 553945.1 553.9451
## 2 MX03 Baja California Sur 3 121577.9 121.5779
## 3 MX18 Nayarit 18 107297.2 107.2972
## 4 MX14 Jalisco 14 1125369.6 1125.3696
## 5 MX01 Aguascalientes 1 204142.6 204.1426
## 6 MX11 Guanajuato 11 652735.7 652.7357
## 7 MX22 Querétaro 22 366872.3 366.8723
## 8 MX13 Hidalgo 13 242824.9 242.8249
## 9 MX16 Michoacán 16 395562.1 395.5621
## 10 MX15 México 15 1487907.5 1487.9075
## geometry pib_int
## 1 MULTIPOLYGON (((-113.1397 2... (500,750]
## 2 MULTIPOLYGON (((-111.2061 2... (0,250]
## 3 MULTIPOLYGON (((-106.6211 2... (0,250]
## 4 MULTIPOLYGON (((-101.5249 2... (1000,1250]
## 5 MULTIPOLYGON (((-101.8462 2... (0,250]
## 6 MULTIPOLYGON (((-100.2803 2... (500,750]
## 7 MULTIPOLYGON (((-100.1228 1... (250,500]
## 8 MULTIPOLYGON (((-98.65941 1... (0,250]
## 9 MULTIPOLYGON (((-103.4796 1... (250,500]
## 10 MULTIPOLYGON (((-98.62798 1... (1250,1500]

Una vez creados los intervalos, se creará los labels que se utilizarán para las leyendas y agrupamientos.

labs1<-c(0,25,50,75,100,125,150,
175,200,225,250,300)*10

label_plot1<-paste0("[",labs1[1:11],
"-", labs1[2:12],"]")

Continuando, se manipulará la paleta de colores a 12 intervalos con los colores que porporciona Inferno pero
utilizandolos nomrmalmente y no invertidos (rev=FALSE).

paleta1<-[Link](12, "Inferno",
rev=FALSE, alpha=0.7)

Por último, se procede a realizar el mapa avanzado modificando el tamaño y tipo de letra que tendrá el título,
además de modificar la leyenda con el fin de que el cuadro ilustrativo no quede muy grande.

mex_map_PIB_ent %>%
ggplot()+
geom_sf(aes(fill=pib_int),
color="white")+
labs(title="Producto Interno Bruto por entidad",
subtitle="Miles de millones de pesos constantes a 2013",
caption="Elaboración propia con datos de INEGI",
fill= "MMDP")+
scale_fill_manual(values = paleta1,
drop=FALSE,
[Link] = "grey80",
label=label_plot1,
guide=guide_legend(direction = "horizontal",
nrow=2,
CONTENTS 67

[Link] = "left"))+
theme_void()+
theme([Link] = element_text(size=10, face="italic",
hjust=1),
[Link] = element_text(size=18, face="bold",
hjust = 0.5),
[Link] = element_text(hjust=0.5),
[Link] = "bottom")

Producto Interno Bruto por entidad


Miles de millones de pesos constantes a 2013

[0−250] [500−750] [1000−1250] [1500−1750] [2000−2250] [2500−3000]


MMDP
[250−500] [750−1000] [1250−1500] [1750−2000] [2250−2500]

Elaboración propia con datos de INEGI

También podría gustarte