Descripción general

En este laboratorio, aplicará varios comandos de graficación y de manejo de datos geoespaciales vectoriales en el lenguaje de programación R. También trabajará con datos tabulares y gráficos. El resultado final será un documento en la sintaxis R Markdown publicado en GitHub Pages.

Fecha de entrega y entregables

La fecha límite de entrega de este laboratorio es el lunes 18 de mayo de 2020. Debe enviarle al profesor por correo electrónico la dirección del sitio en GitHub Pages resultante.

Objetivos

  1. Aplicar comandos de formateo de tablas de los paquetes knitr y kableExtra de R.
  2. Aplicar comandos de graficación del paquete ggplot2 de R.
  3. Aplicar comandos de manejo de datos geoespaciales vectoriales del paquete sf de R.
  4. Generar documentos en R Markdown con tres tipos de visualizaciones de datos:
  • Tablas.
  • Gráficos.
  • Mapas.

Trabajo previo

Se recomienda leer el material preparado por el profesor y consultar los recursos listados en:

Bifuración y clonación de este documento

Ejecute los siguientes pasos para bifurcar a su cuenta en GitHub el repositorio que contiene este documento y posteriormente clonarlo a su computadora, para editarlo con RStudio:

  1. Bifurque (fork) el repositorio https://github.com/geoprocesamiento-2020i/laboratorio-03-r-datos-vectoriales-1 a su cuenta personal en GitHub.
  2. En el apartado Settings del repositorio bifurcado a su cuenta, busque la sección GitHub Pages y habilítela al seleccionar master branch como fuente. Tome nota de la dirección web resultante (ej. https://usuario.github.io/laboratorio-03-r-datos-vectoriales-1/).
  3. En RStudio, clone el repositorio de su cuenta personal con la opción de menú File - New Project - Version Control - Git. En Repository URL escriba la dirección de su repositorio (ej. https://usuario.github.io/laboratorio-03-r-datos-vectoriales-1.git). Puede obtener esta dirección con el botón Clone or download, en la página principal del mismo repositorio.
  4. En R Studio, abra el documento index.Rmd y desarrolle los ejercicios del laboratorio. Cada vez que desee actualizar su documento en GitHub y GitHub Pages:
  • Presione el botón Knit en RStudio para generar el archivo correspondiente en la sintaxis HTML.
  • Suba a su repositorio en GitHub, los archivos index.Rmd e index.html, ya sea mediante la interfaz de GitHub o mediante los comandos de Git explicados en el tutorial.

Desarrollo

En los siguientes ejercicios se utiliza el data frame world, contenido en el paquete spData.

Carga de paquetes

# Paquete para generación de documentos (ej. HTML)
library(knitr)

# Paquete para formateo de tablas
library(kableExtra)

# Paquete de graficación
library(ggplot2)

# Paquete de manejo de datos geoespaciales vectoriales
library(sf)
## Linking to GEOS 3.8.0, GDAL 3.0.4, PROJ 6.3.1
# Paquete con conjuntos de datos geoespaciales
library(spData)

Realice los siguientes ejercicios de graficación y manejo de datos vectoriales en R (el valor porcentual de cada uno se muestra entre paréntesis).

Ejercicio 1 (5%)

Mediante la función names(), observe las columnas que componen el data frame world.

names(world)
##  [1] "iso_a2"    "name_long" "continent" "region_un" "subregion" "type"     
##  [7] "area_km2"  "pop"       "lifeExp"   "gdpPercap" "geom"

NOTA: recuerde que también puede explorar los datos con funciones como str(), summary() y View().

Ejercicio 2 (5%)

Mediante la función kable() del paquete knitr, despliegue en una tabla las diez primeras observaciones (i.e. filas, registros) y las cinco primeras variables (i.e. columnas) del data frame world.

kable(
  world[1:10, 1:5, drop = TRUE], 
  caption="Datos demográficos de los países del mundo"
)
Datos demográficos de los países del mundo
iso_a2 name_long continent region_un subregion
FJ Fiji Oceania Oceania Melanesia
TZ Tanzania Africa Africa Eastern Africa
EH Western Sahara Africa Africa Northern Africa
CA Canada North America Americas Northern America
US United States North America Americas Northern America
KZ Kazakhstan Asia Asia Central Asia
UZ Uzbekistan Asia Asia Central Asia
PG Papua New Guinea Oceania Oceania Melanesia
ID Indonesia Asia Asia South-Eastern Asia
AR Argentina South America Americas South America

Note el uso del parámetro drop=TRUE, para evitar el despliegue de la tabla de geometrías.

Ejercicio 3 (5%)

Mediante la función kable(), despliegue en una tabla las diez primeras observaciones y las variables correspondientes a nombre del país, continente, población, esperanza de vida y renta per cápita del data frame world. Despliegue los nombres de las columnas en español y un título para la tabla.

kable(
  world[1:10, c("name_long","continent","pop","lifeExp","gdpPercap"), drop = TRUE], 
  col.names=c("País","Continente","Población","Esperanza de vida","Renta per cápita"),  
  caption="Datos demográficos de los países del mundo"
)
Datos demográficos de los países del mundo
País Continente Población Esperanza de vida Renta per cápita
Fiji Oceania 885806 69.96000 8222.254
Tanzania Africa 52234869 64.16300 2402.099
Western Sahara Africa NA NA NA
Canada North America 35535348 81.95305 43079.143
United States North America 318622525 78.84146 51921.985
Kazakhstan Asia 17288285 71.62000 23587.338
Uzbekistan Asia 30757700 71.03900 5370.866
Papua New Guinea Oceania 7755785 65.23000 3709.082
Indonesia Asia 255131116 68.85600 10003.089
Argentina South America 42981515 76.25200 18797.548

Ejercicio 4 (5%)

A partir de world, genere un nuevo data frame ordenado por nombre de país. Despliegue los datos en una tabla y utilice las funciones kable_styling() y scroll_box() del paquete kableExtra, para desplegar todas las observaciones, con las mismas variables del ejercicio anterior, y agregar una barra de desplazamiento.

# Se extraen las observaciones ordenadas por orden alfabético de país
world.orden <- order(world$name_long)

# Se genera un nuevo data frame ordenado
world.ordenadoxpais <- world[world.orden,]

# Se formatea la tabla con el nuevo data frame
kable(
  world.ordenadoxpais[, c("name_long","continent","pop","lifeExp","gdpPercap"), drop = TRUE], 
  col.names=c("País","Continente","Población","Esperanza de vida","Renta per cápita"),  
  caption="Datos demográficos de los países del mundo"
) %>%
kable_styling() %>%
scroll_box(
  width = "800px", 
  height = "500px", 
  fixed_thead = TRUE
)
Datos demográficos de los países del mundo
País Continente Población Esperanza de vida Renta per cápita
Afghanistan Asia 32758020 62.89500 1838.9602
Albania Europe 2889104 77.96300 10701.1208
Algeria Africa 39113313 75.64100 13483.3379
Angola Africa 26920466 60.85800 6257.1529
Antarctica Antarctica NA NA NA
Argentina South America 42981515 76.25200 18797.5479
Armenia Asia 2906220 74.25500 7971.1179
Australia Oceania 23504138 82.30000 43547.1975
Austria Europe 8546356 81.49024 44320.5020
Azerbaijan Asia 9535079 71.80000 16715.1055
Bahamas North America 382169 75.37900 28456.8165
Bangladesh Asia 159405279 71.80300 2973.0416
Belarus Europe 9474511 72.97073 17944.2098
Belgium Europe 11209057 81.28780 41360.3956
Belize North America 351694 70.02700 7999.5737
Benin Africa 10286712 60.37300 2001.0773
Bhutan Asia 776448 69.43000 7366.4241
Bolivia South America 10562159 68.35700 6324.8273
Bosnia and Herzegovina Europe 3566002 76.56100 10516.7864
Botswana Africa 2168573 64.78000 15914.6702
Brazil South America 204213133 75.04200 15374.2615
Brunei Darussalam Asia 411704 76.91700 76089.2866
Bulgaria Europe 7223938 74.46585 16302.3206
Burkina Faso Africa 17585977 59.45700 1582.3337
Burundi Africa 9891790 56.68800 803.1728
Cambodia Asia 15270790 68.25100 3124.3193
Cameroon Africa 22239904 57.11100 3196.3615
Canada North America 35535348 81.95305 43079.1425
Central African Republic Africa 4515392 50.62100 597.1352
Chad Africa 13569438 52.20400 2076.6500
Chile South America 17613798 79.11700 22195.2744
China Asia 1364270000 75.93200 12758.6478
Colombia South America 47791911 74.02200 12715.9674
Costa Rica North America 4757575 79.44000 14372.4008
Côte d’Ivoire Africa 22531350 52.52000 3054.5349
Croatia Europe 4238389 77.47805 20334.4465
Cuba North America 11439767 79.41500 NA
Cyprus Asia 1152309 80.17300 29786.3657
Czech Republic Europe 10525347 78.82439 29119.6166
Dem. Rep. Korea Asia 25116363 71.17900 NA
Democratic Republic of the Congo Africa 73722860 58.78200 785.3473
Denmark Europe 5643475 80.70000 45057.0742
Djibouti Africa 912164 62.00600 NA
Dominican Republic North America 10405844 73.48300 12663.0422
Ecuador South America 15903112 75.87900 10901.4186
Egypt Africa 91812566 71.12000 9879.7994
El Salvador North America 6281189 73.01500 6890.7232
Equatorial Guinea Africa 1129424 57.18000 31542.5108
Eritrea Africa NA 64.17400 NA
Estonia Europe 1314545 77.03415 27113.6859
eSwatini Africa 1295097 56.28700 7870.9707
Ethiopia Africa 97366774 64.53500 1424.5270
Falkland Islands South America NA NA NA
Fiji Oceania 885806 69.96000 8222.2538
Finland Europe 5461512 81.18049 39017.5372
France Europe NA NA NA
French Southern and Antarctic Lands Seven seas (open ocean) NA NA NA
Gabon Africa 1875713 65.21100 16678.6381
Georgia Asia 3727000 72.95100 8749.1562
Germany Europe 80982500 81.09024 43560.6192
Ghana Africa 26962563 62.15400 3868.6009
Greece Europe 10892413 81.38537 24081.6305
Greenland North America 56295 NA NA
Guatemala North America 15923559 72.86900 7147.4292
Guinea Africa 11805509 58.84600 1734.7367
Guinea-Bissau Africa 1725744 56.59800 1398.2548
Guyana South America 763393 66.42500 6906.0123
Haiti North America 10572466 62.75700 1652.8548
Honduras North America 8809216 73.18100 4231.3251
Hungary Europe 9866468 75.76341 24161.4255
Iceland Europe 327386 82.86098 41701.1373
India Asia 1293859294 68.02100 5385.1418
Indonesia Asia 255131116 68.85600 10003.0890
Iran Asia 78411092 75.46600 16924.2007
Iraq Asia 35006080 69.45800 14838.3829
Ireland Europe 4657740 81.34878 48898.3287
Israel Asia 8215700 82.15366 31702.0835
Italy Europe 60789140 83.09024 33945.8439
Jamaica North America 2862087 75.68900 8051.2440
Japan Asia 127276000 83.58780 37337.3174
Jordan Asia 8809306 74.03400 8622.1855
Kazakhstan Asia 17288285 71.62000 23587.3375
Kenya Africa 46024250 66.24200 2753.2361
Kosovo Europe 1821800 71.09756 8698.2916
Kuwait Asia 3782450 74.45800 70832.3684
Kyrgyzstan Asia 5835500 70.40244 3181.6422
Lao PDR Asia 6576397 65.97500 5436.4826
Latvia Europe 1993782 74.12439 22172.2535
Lebanon Asia 5603279 79.23100 13831.3752
Lesotho Africa 2145785 53.26800 2677.1981
Liberia Africa 4390737 61.52700 804.7199
Libya Africa 6204108 71.65900 16371.9022
Lithuania Europe 2932367 74.51707 26258.2101
Luxembourg Europe 556319 82.22927 93655.3342
Macedonia Europe 2077495 75.38400 12298.4902
Madagascar Africa 23589801 65.13300 1372.0210
Malawi Africa 17068838 61.93200 1090.3672
Malaysia Asia 30228017 74.97600 24194.6339
Mali Africa 16962846 57.00700 1865.1606
Mauritania Africa 4063920 62.90700 3655.3885
Mexico North America 124221600 76.75300 16622.5970
Moldova Europe 3556397 71.25800 4762.7809
Mongolia Asia 2923896 68.84700 11348.6473
Montenegro Europe 621810 76.71200 14796.6354
Morocco Africa 34318082 75.30900 7078.8815
Mozambique Africa 27212382 57.09900 1079.8239
Myanmar Asia 51924182 66.28500 4770.0121
Namibia Africa 2370992 62.98100 9617.3970
Nepal Asia 28323241 69.51100 2266.1843
Netherlands Europe 16865008 81.70732 45668.4415
New Caledonia Oceania 268050 77.25287 NA
New Zealand Oceania 4509700 81.40488 34455.3312
Nicaragua North America 6013997 74.88400 4784.8305
Niger Africa 19148219 59.22800 904.4567
Nigeria Africa 176460502 52.54900 5671.9006
Northern Cyprus Asia NA NA NA
Norway Europe NA NA NA
Oman Asia 3960925 76.57800 40365.2733
Pakistan Asia 185546257 66.13900 4576.2270
Palestine Asia 4294682 73.12600 4319.5283
Panama North America 3903986 77.61000 20017.9944
Papua New Guinea Oceania 7755785 65.23000 3709.0816
Paraguay South America 6552584 72.91300 8501.5435
Peru South America 30973354 74.51800 11547.8342
Philippines Asia 100102249 68.81300 6585.8959
Poland Europe 38011735 77.60244 24347.0737
Portugal Europe 10401062 81.12195 26023.6978
Puerto Rico North America 3534874 79.39012 35066.0464
Qatar Asia 2374419 77.88800 120860.0676
Republic of Korea Asia 50746659 81.72195 33425.6896
Republic of the Congo Africa 4871101 63.53600 5538.0529
Romania Europe 19908979 74.96098 19677.5203
Russian Federation Europe 143819666 70.74366 25284.5862
Rwanda Africa 11345357 66.18800 1629.8689
Saudi Arabia Asia 30776722 74.23400 49958.4433
Senegal Africa 14546111 66.37600 2218.5519
Serbia Europe 7130576 75.33659 13112.9090
Sierra Leone Africa 7079162 50.95100 1692.1421
Slovakia Europe 5418649 76.81220 27285.2847
Slovenia Europe 2061980 81.07805 28417.6564
Solomon Islands Oceania 575504 70.11300 2139.5607
Somalia Africa 13513125 55.46700 NA
Somaliland Africa NA NA NA
South Africa Africa 54539571 60.99300 12389.7147
South Sudan Africa 11530971 55.81700 1935.8794
Spain Europe 46480882 83.22927 31195.4052
Sri Lanka Asia 20771000 74.90600 10650.3902
Sudan Africa 37737913 64.00200 4188.3348
Suriname South America 547928 71.13800 15306.6924
Sweden Europe 9696110 82.25366 44167.6319
Switzerland Europe 8188649 83.19756 57218.0279
Syria Asia 19203090 69.81700 NA
Taiwan Asia NA NA NA
Tajikistan Asia 8362745 70.69000 2546.5005
Tanzania Africa 52234869 64.16300 2402.0994
Thailand Asia 68416772 74.89500 14857.2029
The Gambia Africa 1917852 60.70700 1550.2184
Timor-Leste Asia 1212814 68.28500 6262.9055
Togo Africa 7228915 59.60100 1315.3403
Trinidad and Tobago North America 1354493 70.42600 31181.8212
Tunisia Africa 11143908 75.33500 10767.0277
Turkey Asia 77030628 75.23900 22401.8804
Turkmenistan Asia 5466241 67.55200 14332.3658
Uganda Africa 38833338 59.22400 1637.2751
Ukraine Europe 45271947 71.18659 8243.4735
United Arab Emirates Asia 9070867 76.94800 63943.1858
United Kingdom Europe 64613160 81.30488 38251.7925
United States North America 318622525 78.84146 51921.9846
Uruguay South America 3419546 77.19000 19827.5650
Uzbekistan Asia 30757700 71.03900 5370.8658
Vanuatu Oceania 258850 71.70900 2892.3416
Venezuela South America 30738378 74.19600 16745.0220
Vietnam Asia 92544915 75.85500 5264.8281
Western Sahara Africa NA NA NA
Yemen Asia 26246327 64.52300 3766.8053
Zambia Africa 15620974 60.77500 3632.5038
Zimbabwe Africa 15411675 59.36000 1925.1387

Note el uso del operador %>%, llamado pipe (tubo), para transmitir datos entre funciones.

Ejercicio 5 (5%)

Filtre el data frame world para extraer en otro data frame las observaciones correspondientes a los siete países de Centroamérica. Mantenga las mismas columnas de los ejercicios anteriores y despliegue los datos en una tabla.

# Se extraen las observaciones correspondientes a los países de Centroamérica
centro_america = world[world$name_long == "Belize" |
                       world$name_long == "Guatemala" |
                       world$name_long == "Honduras" |
                       world$name_long == "El Salvador" |
                       world$name_long == "Nicaragua" |
                       world$name_long == "Costa Rica" |
                       world$name_long == "Panama"
                       , ]

# Se formatea la tabla con el nuevo data frame
kable(
  centro_america[, c("name_long","continent","pop","lifeExp","gdpPercap"), drop = TRUE], 
  col.names=c("País","Continente","Población","Esperanza de vida","Renta per cápita"),  
  caption="Datos demográficos de los países de Centroamérica"
) %>%
kable_styling()
Datos demográficos de los países de Centroamérica
País Continente Población Esperanza de vida Renta per cápita
Panama North America 3903986 77.610 20017.994
Costa Rica North America 4757575 79.440 14372.401
Nicaragua North America 6013997 74.884 4784.830
Honduras North America 8809216 73.181 4231.325
El Salvador North America 6281189 73.015 6890.723
Guatemala North America 15923559 72.869 7147.429
Belize North America 351694 70.027 7999.574

Ejercicio 6 (25%)

Con la función ggplot() del paquete ggplot2, genere un gráfico de barras que muestre la esperanza de vida de los siete países de Centroamérica. El gráfico debe tener un título, los nombres (o códigos) de los países bajo cada barra, los valores sobre las barras y etiquetas para los ejes x e y.

Ejercicio 7 (25%)

Con la función plot() del paquete sf, genere un mapa de coropletas con colores que reflejen la esperanza de vida de los siete países de Centroamérica. El mapa debe llevar un título.

Ejercicio 8 (25%)

Extraiga en un nuevo data frame los países de Centroamérica con esperanza de vida mayor o igual a 74 años y genere el mapa de coropletas, con su título correspondiente.