En esta ocasión utilizaremos los datos de la librería gapminder
para utilizar todo lo que aprendimos sobre el tidyverse
.
library(tidyverse)
library(gapminder)
glimpse(gapminder)
Observations: 1,704
Variables: 6
$ country [3m[38;5;246m<fct>[39m[23m Afghanistan, Afghanistan, Afghanistan, Afghanistan, Afghanistan, Afghanis…
$ continent [3m[38;5;246m<fct>[39m[23m Asia, Asia, Asia, Asia, Asia, Asia, Asia, Asia, Asia, Asia, Asia, Asia, E…
$ year [3m[38;5;246m<int>[39m[23m 1952, 1957, 1962, 1967, 1972, 1977, 1982, 1987, 1992, 1997, 2002, 2007, 1…
$ lifeExp [3m[38;5;246m<dbl>[39m[23m 28.801, 30.332, 31.997, 34.020, 36.088, 38.438, 39.854, 40.822, 41.674, 4…
$ pop [3m[38;5;246m<int>[39m[23m 8425333, 9240934, 10267083, 11537966, 13079460, 14880372, 12881816, 13867…
$ gdpPercap [3m[38;5;246m<dbl>[39m[23m 779.4453, 820.8530, 853.1007, 836.1971, 739.9811, 786.1134, 978.0114, 852…
Ejemplo 1
Calcular el promedio, el máximo y el mínimo de la esperanza de vida de cada continente en el año 2007. Presentar los datos ordenados según la esperanza de vida promedio.
Necesitamos filtrar los datos tal que sólo queden aquellos correspondientes a 2007. Luego, agrupamos los casos de acuerdo a su continente, y calculamos los indicadores agregados solicitados. Luego, ordenamos los resultados.
ejercicio1 <- gapminder %>%
filter(year == 2007) %>%
group_by(continent) %>%
summarise(esp_vida_prom = mean(lifeExp),
esp_vida_max = max(lifeExp),
esp_vida_min = min(lifeExp)) %>%
arrange(esp_vida_prom)
ejercicio1
Ejemplo 2
Construir una nueva variable en el dataset que contenga una estimación del PBI. Estimar la mediana del PBI, y construir otra variable que tome valor “ALTO” cuando el PBI supera ese valor, y “BAJO” cuando no.
Calculamos el PBI como el producto entre la población y el PBI per cápita para cada uno de los países y años. A continuación, guardamos el cálculo de la mediana del PBI en un valor llamado mediana_GDP. Por último, utilizamos la función case_when
para poder construir la variable de nivel de PBI de acuerdo a la condición lógica solicitada. Nótese que el dataframe ejercicio2
ha sido re-escrito.
Ejemplo 3
Crear una copia de la base donde sólo se conserven las variables country, year y lifeExp, pero con los nombres pais, anio y espVida.
Utilizamos select()
para quedarnos con las columnas solicitadas, y rename()
para cambiar sus nombres.
ejercicio3 <- gapminder %>%
select(country, year, lifeExp) %>%
rename(pais = country,
anio = year,
espVida = lifeExp)
head(ejercicio3)
Ejemplo 4
Crear una copia de la base donde sólo se conserven las variables country, year y gdpPercap, pero con los nombres pais, anio y pbiPercap.
ejercicio4 <- gapminder %>%
select(country, year, gdpPercap) %>%
rename(pais = country,
anio = year,
pbiPercap = gdpPercap)
head(ejercicio4)
Ejemplo 5
Crear una nueva tabla que contenga los datos de las tablas ejercicio3
y ejercicio4
. Deben unirse de acuerdo al pais y al anio.
Podemos utilizar la función left_join()
.
ejercicio5 <- left_join(ejercicio3, ejercicio4, by = c("pais", "anio"))
head(ejercicio5)
Ejemplo 6
Presentar los datos de la tabla ejercicio1
de forma tal que esp_vida_prom, esp_vida_max y esp_vida_min sean valores de una variable llamada indicador, y los valores se encuentren en la variable valor.
Utilizamos gather()
, porque queremos transformar los datos de un formato “horizontal” a uno “vertical”.
LS0tCnRpdGxlOiBUaWR5dmVyc2UKb3V0cHV0OgogIGh0bWxfbm90ZWJvb2s6CiAgICB0b2M6IHllcwogICAgdG9jX2Zsb2F0OiB5ZXMKZGF0ZTogIiIKc3VidGl0bGU6IFByw6FjdGljYSBHdWlhZGEKLS0tCgpFbiBlc3RhIG9jYXNpw7NuIHV0aWxpemFyZW1vcyBsb3MgZGF0b3MgZGUgbGEgbGlicmVyw61hIGBnYXBtaW5kZXJgIHBhcmEgdXRpbGl6YXIgdG9kbyBsbyBxdWUgYXByZW5kaW1vcyBzb2JyZSBlbCBgdGlkeXZlcnNlYC4KCmBgYHtyIG1lc3NhZ2U9RkFMU0UsIHdhcm5pbmc9RkFMU0V9CmxpYnJhcnkodGlkeXZlcnNlKQpsaWJyYXJ5KGdhcG1pbmRlcikKYGBgCgpgYGB7cn0KZ2xpbXBzZShnYXBtaW5kZXIpCmBgYAoKIyMjIEVqZW1wbG8gMQoKPiBDYWxjdWxhciBlbCBwcm9tZWRpbywgZWwgbcOheGltbyB5IGVsIG3DrW5pbW8gZGUgbGEgZXNwZXJhbnphIGRlIHZpZGEgZGUgY2FkYSBjb250aW5lbnRlIGVuIGVsIGHDsW8gMjAwNy4gUHJlc2VudGFyIGxvcyBkYXRvcyBvcmRlbmFkb3Mgc2Vnw7puIGxhIGVzcGVyYW56YSBkZSB2aWRhIHByb21lZGlvLgoKTmVjZXNpdGFtb3MgZmlsdHJhciBsb3MgZGF0b3MgdGFsIHF1ZSBzw7NsbyBxdWVkZW4gYXF1ZWxsb3MgY29ycmVzcG9uZGllbnRlcyBhIDIwMDcuIEx1ZWdvLCBhZ3J1cGFtb3MgbG9zIGNhc29zIGRlIGFjdWVyZG8gYSBzdSBfY29udGluZW50ZV8sIHkgY2FsY3VsYW1vcyBsb3MgaW5kaWNhZG9yZXMgYWdyZWdhZG9zIHNvbGljaXRhZG9zLiBMdWVnbywgb3JkZW5hbW9zIGxvcyByZXN1bHRhZG9zLgoKYGBge3J9CmVqZXJjaWNpbzEgPC0gZ2FwbWluZGVyICU+JSAKICBmaWx0ZXIoeWVhciA9PSAyMDA3KSAlPiUgCiAgZ3JvdXBfYnkoY29udGluZW50KSAlPiUgCiAgc3VtbWFyaXNlKGVzcF92aWRhX3Byb20gPSBtZWFuKGxpZmVFeHApLAogICAgICAgICAgICBlc3BfdmlkYV9tYXggPSAgbWF4KGxpZmVFeHApLAogICAgICAgICAgICBlc3BfdmlkYV9taW4gPSAgbWluKGxpZmVFeHApKSAlPiUgCiAgYXJyYW5nZShlc3BfdmlkYV9wcm9tKQoKZWplcmNpY2lvMQpgYGAKCiMjIyBFamVtcGxvIDIKCj4gQ29uc3RydWlyIHVuYSBudWV2YSB2YXJpYWJsZSBlbiBlbCBkYXRhc2V0IHF1ZSBjb250ZW5nYSB1bmEgZXN0aW1hY2nDs24gZGVsIFBCSS4gRXN0aW1hciBsYSBtZWRpYW5hIGRlbCBQQkksIHkgY29uc3RydWlyIG90cmEgdmFyaWFibGUgcXVlIHRvbWUgdmFsb3IgIkFMVE8iIGN1YW5kbyBlbCBQQkkgc3VwZXJhIGVzZSB2YWxvciwgeSAiQkFKTyIgY3VhbmRvIG5vLgoKQ2FsY3VsYW1vcyBlbCBQQkkgY29tbyBlbCBwcm9kdWN0byBlbnRyZSBsYSBwb2JsYWNpw7NuIHkgZWwgUEJJIHBlciBjw6FwaXRhIHBhcmEgY2FkYSB1bm8gZGUgbG9zIHBhw61zZXMgeSBhw7Fvcy4gQSBjb250aW51YWNpw7NuLCBndWFyZGFtb3MgZWwgY8OhbGN1bG8gZGUgbGEgbWVkaWFuYSBkZWwgUEJJIGVuIHVuIHZhbG9yIGxsYW1hZG8gX21lZGlhbmFfR0RQXy4gUG9yIMO6bHRpbW8sIHV0aWxpemFtb3MgbGEgZnVuY2nDs24gYGNhc2Vfd2hlbmAgcGFyYSBwb2RlciBjb25zdHJ1aXIgbGEgdmFyaWFibGUgZGUgbml2ZWwgZGUgUEJJIGRlIGFjdWVyZG8gYSBsYSBjb25kaWNpw7NuIGzDs2dpY2Egc29saWNpdGFkYS4gTsOzdGVzZSBxdWUgZWwgZGF0YWZyYW1lIGBlamVyY2ljaW8yYCBoYSBzaWRvIHJlLWVzY3JpdG8uCgpgYGB7cn0KZWplcmNpY2lvMiA8LSBnYXBtaW5kZXIgJT4lIAogIG11dGF0ZShHRFAgPSBwb3AgKiBnZHBQZXJjYXApCgptZWRpYW5hX0dEUCA8LSBtZWRpYW4oZWplcmNpY2lvMiRHRFApCgplamVyY2ljaW8yIDwtIGVqZXJjaWNpbzIgJT4lIAogIG11dGF0ZShHRFBfbGV2ZWwgPSBjYXNlX3doZW4oR0RQID4gbWVkaWFuYV9HRFAgfiAiQUxUTyIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHRFAgPCBtZWRpYW5hX0dEUCB+ICJCQUpPIikpCgpoZWFkKGVqZXJjaWNpbzIpCmBgYAoKIyMjIEVqZW1wbG8gMwoKPiBDcmVhciB1bmEgY29waWEgZGUgbGEgYmFzZSBkb25kZSBzw7NsbyBzZSBjb25zZXJ2ZW4gbGFzIHZhcmlhYmxlcyBfY291bnRyeV8sIF95ZWFyXyB5IF9saWZlRXhwXywgcGVybyBjb24gbG9zIG5vbWJyZXMgX3BhaXNfLCBfYW5pb18geSBfZXNwVmlkYV8uCgpVdGlsaXphbW9zIGBzZWxlY3QoKWAgcGFyYSBxdWVkYXJub3MgY29uIGxhcyBjb2x1bW5hcyBzb2xpY2l0YWRhcywgeSBgcmVuYW1lKClgIHBhcmEgY2FtYmlhciBzdXMgbm9tYnJlcy4KCmBgYHtyfQplamVyY2ljaW8zIDwtIGdhcG1pbmRlciAlPiUgCiAgc2VsZWN0KGNvdW50cnksIHllYXIsIGxpZmVFeHApICU+JSAKICByZW5hbWUocGFpcyA9IGNvdW50cnksCiAgICAgICAgIGFuaW8gPSB5ZWFyLAogICAgICAgICBlc3BWaWRhID0gbGlmZUV4cCkKCmhlYWQoZWplcmNpY2lvMykKYGBgCgojIyMgRWplbXBsbyA0Cgo+IENyZWFyIHVuYSBjb3BpYSBkZSBsYSBiYXNlIGRvbmRlIHPDs2xvIHNlIGNvbnNlcnZlbiBsYXMgdmFyaWFibGVzIF9jb3VudHJ5XywgX3llYXJfIHkgX2dkcFBlcmNhcF8sIHBlcm8gY29uIGxvcyBub21icmVzIF9wYWlzXywgX2FuaW9fIHkgX3BiaVBlcmNhcF8uCgpgYGB7cn0KZWplcmNpY2lvNCA8LSBnYXBtaW5kZXIgJT4lIAogIHNlbGVjdChjb3VudHJ5LCB5ZWFyLCBnZHBQZXJjYXApICU+JSAKICByZW5hbWUocGFpcyA9IGNvdW50cnksCiAgICAgICAgIGFuaW8gPSB5ZWFyLAogICAgICAgICBwYmlQZXJjYXAgPSBnZHBQZXJjYXApCgpoZWFkKGVqZXJjaWNpbzQpCmBgYAoKIyMjIEVqZW1wbG8gNQoKPiBDcmVhciB1bmEgbnVldmEgdGFibGEgcXVlIGNvbnRlbmdhIGxvcyBkYXRvcyBkZSBsYXMgdGFibGFzIGBlamVyY2ljaW8zYCB5IGBlamVyY2ljaW80YC4gRGViZW4gdW5pcnNlIGRlIGFjdWVyZG8gYWwgX3BhaXNfIHkgYWwgX2FuaW9fLgoKUG9kZW1vcyB1dGlsaXphciBsYSBmdW5jacOzbiBgbGVmdF9qb2luKClgLgoKYGBge3J9CmVqZXJjaWNpbzUgPC0gbGVmdF9qb2luKGVqZXJjaWNpbzMsIGVqZXJjaWNpbzQsIGJ5ID0gYygicGFpcyIsICJhbmlvIikpCgpoZWFkKGVqZXJjaWNpbzUpCmBgYAoKIyMjIEVqZW1wbG8gNgoKPiBQcmVzZW50YXIgbG9zIGRhdG9zIGRlIGxhIHRhYmxhIGBlamVyY2ljaW8xYCBkZSBmb3JtYSB0YWwgcXVlIF9lc3BfdmlkYV9wcm9tXywgX2VzcF92aWRhX21heF8geSBfZXNwX3ZpZGFfbWluXyBzZWFuIHZhbG9yZXMgZGUgdW5hIHZhcmlhYmxlIGxsYW1hZGEgX2luZGljYWRvcl8sIHkgbG9zIHZhbG9yZXMgc2UgZW5jdWVudHJlbiBlbiBsYSB2YXJpYWJsZSBfdmFsb3JfLgoKVXRpbGl6YW1vcyBgZ2F0aGVyKClgLCBwb3JxdWUgcXVlcmVtb3MgdHJhbnNmb3JtYXIgbG9zIGRhdG9zIGRlIHVuIGZvcm1hdG8gImhvcml6b250YWwiIGEgdW5vICJ2ZXJ0aWNhbCIuCgpgYGB7cn0KZWplcmNpY2lvNiA8LSBlamVyY2ljaW8xICU+JSAKICBnYXRoZXIoLiwga2V5ID0gaW5kaWNhZG9yLCB2YWx1ZSA9IHZhbG9yLCAyOjQpCgpoZWFkKGVqZXJjaWNpbzYpCmBgYAoK