Normes ISO i el sistema d'estats
Quants estats hi ha al món? Aquesta pregunta no té una resposta única si mirem el recompte que fa cada una de les diverses institucions que intenta categoritzar el sistema d’estats. Aquestes institucions estableixen un recompte anual en base a uns determinats criteris i assignen un codi a cada element del sistema –en el nostre cas, els estats–. Una de les institucions que fa aquesta tasca és l’Organització Internacional per a l’Estandardització (International Organization for Standardization en anglès, coneguda com a ISO), una organització no governamental que s’encarrega d’elaborar estàndards internacionals de tot tipus. La norma ISO 3166 és la que correspon al sistema d’estats. Aquesta norma classifica i codifica cada un dels estats existents en el sistema. Per exemple, Espanya rep dues codificacions: segons el codi de caràcters (iso3c), és SPN, i segons el codi numèric (iso3n), és 230. França, en el seu cas, rep les codificacions FRN i 220. Els Estats Units USA i 2.
Els estats són una de les principals unitats d’anàlisi en les bases de dades internacionals. És per això que quan estiguem examinant els estats en bases de dades, estarem implícitament utilitzant categoritzacions ja establertes, sigui la ISO 3166 o bé la d’alguna altra institució. El cert és que no només existeix una sola manera de classificar els estats, sinó vàries. Hi ha altres organitzacions que elaboren les seves pròpies nomenclatures, com el projecte Correlates of War (COW), Eurostat, el Banc Mundial … Per sort, tota aquesta diversitat està recollida en el paquet d’R countrycode
, que examinarem en aquesta activitat. Per a això, en primer lloc carregarem a R aquest paquet juntament amb altres paquets que necessitarem per fer els exercicis que us proposem.
#recordeu que els paquets han d'estar prèviament instal·lats
library(countrycode)
library(haven)
library(readr)
library(dplyr)
library(tidyr)
library(ggplot2)
library(readxl)
En la següent Figura 1, hem creat un diagrama de línies a partir del paquet countrycode
, que respon a la pregunta: quants estats hi ha al món? Com veieu, és sorprenent que la quantitat d’estats que tenen registrats cada any diverses organitzacions internacionals i grups d’investigació tinguin tant poca coincidència. Si utilitzéssim una base de dades que pren com a referència la norma ISO 3166 (veure iso2c, iso3c, iso3n), ens trobaríem que el 1940 hi havia uns 150 estats registrats. En canvi, si prenem com a referència Polity IV (p4c), en tindríem menys de 75.
OBSERVA: Com s’observa a la Figura 1, al llarg del temps aquestes organitzacions no han tingut en compte el mateix nombre d’estats. Les seves classificacions varien perquè han emprat definicions diferents per acceptar què és un estat i què no ho és.
- Per què creus que hi ha un augment tant important de països el 1900?
- Per què hi ha tanta diferència entre
cowc
ip4c
i la resta entre 1900 i 1960? - Per què
vdem
,imf
,fao
oiso3n
, que segueixen un mateix patró fins a 1950, segueixen línies diferents a partir de llavors?
En aquesta secció explorarem el paquet d’R countrycode (Arel-Bundock, Enevoldsen, and Yetman 2018), que ens permetrà veure la importància d’aquestes classificacions quan treballem amb bases de dades internacionals. Per obrir el paquet a R podem teclejar countrycode::
i ens apareixerà un menú. També podem obrir qualsevol paquet anant a Global Environment i buscant-lo al desplegable. Veurem que countrycode
té quatre elements principals:
- El marc de dades
codelist_panel
- La funció
countrycode()
- L’objecte
codelist
- L’objecte
cldr_examples
El marc de dades codelist_panel
Fixem-nos primer en el marc de dades codelist_panel
. Observem que el paquet té 48 variables, que veiem desplegades de forma vertical, la primera de les quals és country.name.en
. Aquesta variable conté els noms dels països, com Afghanistan. A la segona variable (year
) hi tenim els anys. A partir de la tercera variable veiem els diferents tipus de codificació segons cada institució. Podem consultar la majoria de noms d’institucions amb ?codelist
.
glimpse(codelist_panel)
## Rows: 28,542
## Columns: 48
## $ country.name.en <chr> "Afghanistan", "Afghanistan", "Afghanistan"…
## $ year <dbl> 1789, 1790, 1791, 1792, 1793, 1794, 1795, 1…
## $ ar5 <chr> "ASIA", "ASIA", "ASIA", "ASIA", "ASIA", "AS…
## $ cctld <chr> ".af", ".af", ".af", ".af", ".af", ".af", "…
## $ continent <chr> "Asia", "Asia", "Asia", "Asia", "Asia", "As…
## $ country.name.de <chr> "Afghanistan", "Afghanistan", "Afghanistan"…
## $ country.name.de.regex <chr> "afghan", "afghan", "afghan", "afghan", "af…
## $ country.name.en.regex <chr> "afghan", "afghan", "afghan", "afghan", "af…
## $ cowc <chr> NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA,…
## $ cown <dbl> NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA,…
## $ currency <chr> "Afghani", "Afghani", "Afghani", "Afghani",…
## $ dhs <chr> "AF", "AF", "AF", "AF", "AF", "AF", "AF", "…
## $ ecb <chr> "AF", "AF", "AF", "AF", "AF", "AF", "AF", "…
## $ eu28 <chr> "NA", "NA", "NA", "NA", "NA", "NA", "NA", "…
## $ eurocontrol_pru <chr> "Asia", "Asia", "Asia", "Asia", "Asia", "As…
## $ eurocontrol_statfor <chr> "Asia/Pacific", "Asia/Pacific", "Asia/Pacif…
## $ eurostat <chr> "AF", "AF", "AF", "AF", "AF", "AF", "AF", "…
## $ fao <dbl> 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2…
## $ fips <chr> "AF", "AF", "AF", "AF", "AF", "AF", "AF", "…
## $ gaul <dbl> 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1…
## $ genc2c <chr> "AF", "AF", "AF", "AF", "AF", "AF", "AF", "…
## $ genc3c <chr> "AFG", "AFG", "AFG", "AFG", "AFG", "AFG", "…
## $ genc3n <chr> "004", "004", "004", "004", "004", "004", "…
## $ gwc <chr> "AFG", "AFG", "AFG", "AFG", "AFG", "AFG", "…
## $ gwn <dbl> 700, 700, 700, 700, 700, 700, 700, 700, 700…
## $ icao.region <chr> "ASIAPAC", "ASIAPAC", "ASIAPAC", "ASIAPAC",…
## $ imf <dbl> 512, 512, 512, 512, 512, 512, 512, 512, 512…
## $ ioc <chr> "AFG", "AFG", "AFG", "AFG", "AFG", "AFG", "…
## $ iso2c <chr> "AF", "AF", "AF", "AF", "AF", "AF", "AF", "…
## $ iso3c <chr> "AFG", "AFG", "AFG", "AFG", "AFG", "AFG", "…
## $ iso3n <dbl> 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4…
## $ iso4217c <chr> "AFN", "AFN", "AFN", "AFN", "AFN", "AFN", "…
## $ iso4217n <dbl> 971, 971, 971, 971, 971, 971, 971, 971, 971…
## $ p4c <chr> NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA,…
## $ p4n <dbl> NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA,…
## $ region <chr> "South Asia", "South Asia", "South Asia", "…
## $ region23 <chr> "Southern Asia", "Southern Asia", "Southern…
## $ un <dbl> 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4…
## $ un.region.code <chr> "142", "142", "142", "142", "142", "142", "…
## $ un.regionintermediate.code <chr> "NA", "NA", "NA", "NA", "NA", "NA", "NA", "…
## $ un.regionsub.code <chr> "34", "34", "34", "34", "34", "34", "34", "…
## $ unicode.symbol <chr> "\U0001f1e6\U0001f1eb", "\U0001f1e6\U0001f1…
## $ unpd <dbl> 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4…
## $ vdem <dbl> 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36,…
## $ wb <chr> "AFG", "AFG", "AFG", "AFG", "AFG", "AFG", "…
## $ wb_api2c <chr> "AF", "AF", "AF", "AF", "AF", "AF", "AF", "…
## $ wb_api3c <chr> "AFG", "AFG", "AFG", "AFG", "AFG", "AFG", "…
## $ wvs <dbl> 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4…
Exercici 1: A partir del resultat de glimpse(codelist_panel)
i d’observar la Figura 1, respon a les següents preguntes:
- Fixa’t en les diferents variables del marc de dades. Sabries identificar el nom de la organització que correspon a cada sigla? Trobaràs la resposta a
?codelist
. Escull i descriu-ne breument cinc de diferents. - Escull una d’aquestes institucions i investiga la metodologia i la definició d’estat que fa servir.
- Per què necessitem estàndards internacionals? Busca a internet una altra codificació ISO (que no sigui la 3166) i comenta la seva rellevància en l’àmbit internacional.
Ara que ja ens hem familiaritzat amb algunes de les institucions que categoritzen els estats, anem a veure com els classifiquen. A continuació a la Taula 1 reproduïm un fragment del marc de dades codelist_panel
. Per això hem transformat codelist_panel
en l’objecte cc
:
- Hem mantingut només els valors corresponents a l’any 2000.
- Hem seleccionat només unes poques columnes, la de country.name.en (que hem reanomenat com a country), i les iso2c, iso3c, iso3n, cowc, cown, eurostat i imf.
Com podem observar, codis de país acostumen a tenir entre 2 i 3 xifres i solen estar format per caràcters (c
) o per nombres (n
). Per exemple, iso2n
té dos nombres, cowc
està format per caràcters, etc.
cc <- codelist_panel %>%
filter(year == 2000) %>%
select(country = country.name.en, iso2c, iso3c, iso3n, cowc, cown, eurostat, imf) %>%
head(20)
cc
country | iso2c | iso3c | iso3n | cowc | cown | eurostat | imf |
---|---|---|---|---|---|---|---|
Afghanistan | AF | AFG | 4 | AFG | 700 | AF | 512 |
Albania | AL | ALB | 8 | ALB | 339 | AL | 914 |
Algeria | DZ | DZA | 12 | ALG | 615 | DZ | 612 |
Andorra | AD | AND | 20 | AND | 232 | AD | NA |
Angola | AO | AGO | 24 | ANG | 540 | AO | 614 |
Antigua & Barbuda | AG | ATG | 28 | AAB | 58 | AG | 311 |
Argentina | AR | ARG | 32 | ARG | 160 | AR | 213 |
Armenia | AM | ARM | 51 | ARM | 371 | AM | 911 |
Australia | AU | AUS | 36 | AUL | 900 | AU | 193 |
Austria | AT | AUT | 40 | AUS | 305 | AT | 122 |
Azerbaijan | AZ | AZE | 31 | AZE | 373 | AZ | 912 |
Bahamas | BS | BHS | 44 | BHM | 31 | BS | 313 |
Bahrain | BH | BHR | 48 | BAH | 692 | BH | 419 |
Bangladesh | BD | BGD | 50 | BNG | 771 | BD | 513 |
Barbados | BB | BRB | 52 | BAR | 53 | BB | 316 |
Belarus | BY | BLR | 112 | BLR | 370 | BY | 913 |
Belgium | BE | BEL | 56 | BEL | 211 | BE | 124 |
Belize | BZ | BLZ | 84 | BLZ | 80 | BZ | 339 |
Benin | BJ | BEN | 204 | BEN | 434 | BJ | 638 |
Bhutan | BT | BTN | 64 | BHU | 760 | BT | 514 |
PRACTICA 1: A continuació crearem un marc de dades personalitzat amb els països i variables que vulguem. Per això, ens haurem d’ajudar del codi següent i canviar alguns dels paràmetres:
- Per canviar els països de la taula (substituint “Country1,” “Country2,” “Country3” pels països en qüestió) haureu de saber primer els noms exactes dels països. Ho podreu esbrinar amb
unique(codelist_panel$country.name.en)
. - També canviarem algunes columnes. Podeu obtenir una llista de les columnes amb
names(codelist_panel)
.
cc1 <- codelist_panel %>%
filter(country.name.en %in% c("Country 1", "Country 2", "Country 3"), #afegiu dos o més països, assegureu-vos que escriviu el nom de cada país correctament
year %in% c(1970, 2010)) %>% # canvieu l'any
select(country = country.name.en,
iso2c, iso3c, iso3n, cowc, cown, eurostat, imf) #seleccioneu altres institucions
cc1 #imprimiu el marc de dades
La funció countrycode()
La principal utilitat del paquet countrycode recau en què ens permet equiparar (per posteriorment ajuntar) dades de països que provenen de bases de dades diferents. Suposem, per exemple, que tenim els dos següents marcs de dades:
country | code | gdp |
---|---|---|
France | FR | 30000 |
Germany | GE | 35000 |
country | code | lang |
---|---|---|
French Republic | FRA | French |
Federal Republic of Germany | FRG | German |
Com veieu, els dos marcs de dades contenen dades dels mateixos països: França i Alemanya. No obstant, no hi ha una manera òbvia d’ajuntar-los de forma automàtica per simil·litud de cel·les. Cada marc de dades es refereix al país d’una manera diferent i també utilitza un codi diferent.
- Com que només tenim dues observacions, podríem ajuntar els marcs de dades de manera manual utilitzant programes com Excel.
- Però imaginem-nos que tenim dades per un període de més de 50 anys de tots els països del món. Serien aproximadament 150 * 50 = 7.500 casos, de manera que ajuntar-ho de forma manual ens portaria moltes hores de feina.
- Necessitem una forma automàtica que ens permeti fer aquesta operació. Així podríem, per exemple, enllaçar una base de dades que funcioni amb
iso3c
amb una base de dades del Banc Mundial que funciona ambwb
d’una manera molt ràpida. - La funció
countrycode()
ens permet ajuntar marcs de dades de codis diferents.
Vegem com examinar els codis d’un marc de dades. Si recuperem el marc de dades cc
que hem creat anteriorment, podem examinar la codificació dels països segons iso2c
de la següent manera:
cc$iso2c
## [1] "AF" "AL" "DZ" "AD" "AO" "AG" "AR" "AM" "AU" "AT" "AZ" "BS" "BH" "BD" "BB"
## [16] "BY" "BE" "BZ" "BJ" "BT"
Amb la funció countrycode()
podem convertir aquestes codificacions en unes altres d’una manera molt senzilla. Fixeu-vos que a dins la funció hi ha tres arguments, separats per comes:
- Com a primer argument de la funció indicarem on es troba el codi que volem transformar. En aquest exemple, indicaríem el marc de dades i la variable corresponent:
cc$iso2c
. - Com a segon argument indicarem quina és la nomenclatura d’aquest codi.
- Com a tercer argument indicarem la nomenclatura a la que ho volem transformar.
countrycode(cc$iso2c, origin = "iso2c", destination = "wb")
## [1] "AFG" "ALB" "DZA" "AND" "AGO" "ATG" "ARG" "ARM" "AUS" "AUT" "AZE" "BHS"
## [13] "BHR" "BGD" "BRB" "BLR" "BEL" "BLZ" "BEN" "BTN"
Fixeu-vos que la funció ens ha transformat els codis de iso2c
, de dos caràcters, a codis de wb
, de tres caràcters. Amb la funció countrycode()
també podem saber, per exemple, a quina nomenclatura fao
correspondria a Espanya si sabem la seva nomenclatura iso2c
.
countrycode(c("ES"), "iso2c", "fao")
## [1] 203
PRACTICA 2: Selecciona un altre país que no sigui Espanya i prova la conversió d’iso2c
a una altra nomenclatura que no sigui fao
. Pots veure la llista de països amb:
View(distinct(code, country.name.en, iso2c))
Cas pràctic 1
Tenim el marc de dades següent, format per diverses variables. Els codis dels països es troben a la columna md_agr$code
:
md_agr <- data.frame(country = c("France", "France", "United Kingdom", "United Kingdom",
"Poland", "Poland", "Congo", "Congo"),
code = c("FRN", "FRN", "UKG", "UKG", "POL", "POL", "CON", "CON"),
year = c(1980, 2010, 1980, 2010, 1980, 2010, 1980, 2010),
dem = c(TRUE, TRUE, TRUE, TRUE, FALSE, TRUE, FALSE, FALSE),
pib_cap = c(12672.18, 40638.33, 10032.06, 38893.02, 5241.75, 12597.86,
927.10, 2737.34), agr = c(56.8, 52.8, 76.8, 71.2, 64.5, 47.2, 30.8, 31),
stringsAsFactors = FALSE)
Podem visualitzar el marc de dades que acabem de crear teclejant md_agr
.
country | code | year | dem | pib_cap | agr |
---|---|---|---|---|---|
France | FRN | 1980 | TRUE | 12672.18 | 56.8 |
France | FRN | 2010 | TRUE | 40638.33 | 52.8 |
United Kingdom | UKG | 1980 | TRUE | 10032.06 | 76.8 |
United Kingdom | UKG | 2010 | TRUE | 38893.02 | 71.2 |
Poland | POL | 1980 | FALSE | 5241.75 | 64.5 |
Poland | POL | 2010 | TRUE | 12597.86 | 47.2 |
Congo | CON | 1980 | FALSE | 927.10 | 30.8 |
Congo | CON | 2010 | FALSE | 2737.34 | 31.0 |
Exercici 2: Volem transformar els valors de la columna code
del marc de dades md_agr
a iso3n
. No obstant, desconeixem quina nomenclatura fa servir code
.
- Esbrina quina és la nomenclatura en qüestió. Hauràs de substituir els interrogants del codi i provar diverses combinacions fins que en trobis una que et faci la conversió correctament.
md_agr %>%
mutate(code = countrycode(code, origin = "????", destination = "iso3n"))
Els objectes codelist
i cldr_examples
El paquet countrycode no només ens permet modificar els codis dels països, sinó que també ens permet modificar els noms dels països a un altre idioma. És a dir, podem traduir en castellà, en català, en basc, en suahili o en qualsevol idioma els noms dels països d’una base de dades amb unes poques línies de codi. Fixeu-vos en la taula cldr_examples
, que registra 622 maneres diferents d’anomenar els Territoris Francesos del Sud (CLDR respon al nom de Common Locale Data Repository, un repositori que registra termes amb centenars d’idiomes diferents).
Reproduïu la taula teclejant cldr_examples
o feu sample(cldr_examples[,2], 10)
vàries vegades per veure una mostra dels diferents idiomes que contempla. A la Taula 3 podeu veure’n una mostra:
Code | Example |
---|---|
cldr.short.bo | TF |
cldr.variant.el | Γαλλικά Νότια Εδάφη |
cldr.variant.ar_ae | الأقاليم الجنوبية الفرنسية |
cldr.name.asa | TF |
cldr.variant.ki | TF |
cldr.name.kln | TF |
cldr.variant.mg | TF |
cldr.name.so | Dhul xadeedka Koonfureed ee Faransiiska |
cldr.name.lo | ເຂດແດນທາງໃຕ້ຂອຝຮັ່ງ |
cldr.name.tr | Fransız Güney Toprakları |
cldr.short.kn | ಫ್ರೆಂಚ್ ದಕ್ಷಿಣ ಪ್ರದೇಶಗಳು |
cldr.variant.bs_cyrl | Француске Јужне Територије |
cldr.name.fi | Ranskan eteläiset alueet |
cldr.short.mk | Француски Јужни Територии |
cldr.name.fr | Terres australes françaises |
cldr.short.lag | TF |
cldr.variant.gd | Ranntairean a Deas na Frainge |
cldr.variant.ru | Французские Южные территории |
cldr.variant.ksh | Franzüüsesche Södsee-Enselle |
cldr.variant.rn | TF |
cldr.name.gu | ફ્રેંચ સધર્ન ટેરિટરીઝ |
cldr.short.mg | TF |
cldr.short.br | Douaroù aostral Frañs |
cldr.variant.ig | Ụmụ ngalaba Frenchi Southern |
cldr.short.uz_cyrl | Француз жанубий ҳудудлари |
L’objecte cldr_examples
és només una petita mostra del que conté el marc de dades codelist
, que és un exhaustiu marc de dades que emmagatzema centenars de codificacions de països i registres CLDR. Com veieu a la taula anterior, els noms de països tenen un codi de referència que comença per cldr
, després hi figura name
, variant
o short
i a continuació el que sembla una abreviació del nom de l’idioma.
PRACTICA 3: Observeu el marc de dades codelist
amb glimpse(codelist)
. Al principi de la llista us apareixeran algunes variables que ja hem vist anteriorment. A continuació començaran a aparèixer les variables que comencen per cldr
.
- Identifiqueu les variables que corresponen al rus, el coreà, el japonès i el croat.
- Un cop hagueu identificat un idioma, podeu inspeccionar el contingut de la variable utilitzant com a plantilla els exemples següents. Només heu de substituir el codi que considereu oportú.
names(codelist) #si voleu consultar només els codis
codelist[,"cldr.name.ca"] #noms en català
codelist[,"cldr.name.es"] #noms en castellà
codelist[,"cldr.name.eu"] #noms en euskera
Amb el que hem après fins ara ja podem crear un marc de dades en qualsevol idioma del món. Per testar-ho, modificarem el marc de dades cc
per tal que els noms dels països apareixin en un altre idioma. Ho podem fer amb la funció countrycode()
. El resultat el podeu veure a la Taula 4.
cat <- cc #fem primer una còpia de l'objecte
cat <- cat %>%
mutate(country = countrycode(country, #marquem la columna que volem modificar
origin = "country.name.en", #marquem el codi de la columna d'origen
destination = "cldr.name.ca")) #marquem el codi de la columna de destí
cat #observem el nou marc de dades
country | iso2c | iso3c | iso3n | cowc | cown | eurostat | imf |
---|---|---|---|---|---|---|---|
Afganistan | AF | AFG | 4 | AFG | 700 | AF | 512 |
Albània | AL | ALB | 8 | ALB | 339 | AL | 914 |
Algèria | DZ | DZA | 12 | ALG | 615 | DZ | 612 |
Andorra | AD | AND | 20 | AND | 232 | AD | NA |
Angola | AO | AGO | 24 | ANG | 540 | AO | 614 |
Antigua i Barbuda | AG | ATG | 28 | AAB | 58 | AG | 311 |
Argentina | AR | ARG | 32 | ARG | 160 | AR | 213 |
Armènia | AM | ARM | 51 | ARM | 371 | AM | 911 |
Austràlia | AU | AUS | 36 | AUL | 900 | AU | 193 |
Àustria | AT | AUT | 40 | AUS | 305 | AT | 122 |
Azerbaidjan | AZ | AZE | 31 | AZE | 373 | AZ | 912 |
Bahames | BS | BHS | 44 | BHM | 31 | BS | 313 |
Bahrain | BH | BHR | 48 | BAH | 692 | BH | 419 |
Bangladesh | BD | BGD | 50 | BNG | 771 | BD | 513 |
Barbados | BB | BRB | 52 | BAR | 53 | BB | 316 |
Belarús | BY | BLR | 112 | BLR | 370 | BY | 913 |
Bèlgica | BE | BEL | 56 | BEL | 211 | BE | 124 |
Belize | BZ | BLZ | 84 | BLZ | 80 | BZ | 339 |
Benín | BJ | BEN | 204 | BEN | 434 | BJ | 638 |
Bhutan | BT | BTN | 64 | BHU | 760 | BT | 514 |
PRACTICA 4: Feu el mateix procediment però amb un altre idioma com s’indica a continuació.
- Creeu una còpia de l’objecte
cc
amb el nom que vulgueu. - Introduïu el nom de l’objecte en la segona línea de codi i proposeu un nou idioma per al marc de dades.
????? <- cc #creem una còpia de l'objecte cc
????? <- ????? %>%
mutate(country = countrycode(country,
origin = "country.name.en",
destination = "cldr.?????.???")) #proposeu un nou idioma
Cas pràctic 2
Volem fer un estudi sobre la democràcia i el covid, però tenim dades provinents de dues fonts diferents.
- Les dades de democràcia procedents de la base de dades Polity V (Marshall and Gurr 2020).
- Les dades de covid19 procedeixen del European Centre for Disease Prevention and Control.
El nostre objectiu és crear un marc de dades únic, on el nom dels països hi figuri un idioma diferent a l’anglès.
Primer descarreguem i netegem les dades de democràcia. Ens generarà la Taula 5, que podeu imprimir teclejant polity
. Observem que tenim dues columnes amb codis de país, una columna amb el nom del país i una amb la variable polity2
, que ens mesura en un contínuum si un país és una democràcia (+10) o no ho és (-10).
polity <- haven::read_spss("http://www.systemicpeace.org/inscr/p5v2018.sav")
polity <- polity %>%
filter(year == last(year)) %>%
select(ccode, scode, country, polity2)
ccode | scode | country | polity2 |
---|---|---|---|
700 | AFG | Afghanistan | -1 |
339 | ALB | Albania | 9 |
615 | ALG | Algeria | 2 |
540 | ANG | Angola | -2 |
160 | ARG | Argentina | 9 |
371 | ARM | Armenia | 7 |
I descarreguem i netegem les dades del covid19. Ens generarà la Taula 6, que podeu imprimir teclejant covid
.
download.file("https://www.ecdc.europa.eu/sites/default/files/documents/COVID-19-geographic-disbtribution-worldwide.xlsx",
"covid.xlsx")
covid <- read_xlsx("covid.xlsx")
covid <- covid %>%
filter(year == "2020", month == "6", day == "11") %>%
select(code = countryterritoryCode, country = countriesAndTerritories,
cases, deaths, popData2019, continentExp)
DESCÀRREGA: Si no us funciona el codi de descàrrega, descarregueu l’arxiu .xlsx manualment, ubiqueu-lo al vostre directori de treball i canvieu-li el nom per covid.xls. A continuació, cargueu-lo amb covid <- read_xlsx(“covid.xlsx”)
i seguiu el codi
- Una altra opció és el següent codi alternatiu, que requereix el paquet
readr
.
library(readr) #instal·ar paquet readr
covid <- read_csv("https://opendata.ecdc.europa.eu/covid19/casedistribution/csv")
covid <- covid %>%
filter(dateRep == "11/06/2020") %>%
select(code = countryterritoryCode, country = countriesAndTerritories,
cases, deaths, popData2019, continentExp)
code | country | cases | deaths | popData2019 | continentExp |
---|---|---|---|---|---|
AFG | Afghanistan | 684 | 21 | 38041757 | Asia |
ALB | Albania | 42 | 0 | 2880913 | Europe |
DZA | Algeria | 102 | 8 | 43053054 | Africa |
AND | Andorra | 0 | 0 | 77146 | Europe |
AGO | Angola | 17 | 0 | 31825299 | Africa |
AIA | Anguilla | 0 | 0 | 14872 | America |
Exercici 3: Examineu els marcs de dades polity
i covid
tal com t’apareixen a les taules 5 i 6:
- Fixeu-vos bé en les columnes on apareixen codis de països. Quines són? Hi ha alguna columna de codi de país en el primer marc de dades que sigui exactament igual en el segon?
- En cas de no coincidir, hi ha alguna manera amb la que podríem transformar les columnes d’un marc de dades per tal que siguin exactament iguals a l’altre marc de dades?
Segurament ens hem fixat que les variables polity$scode
i covid$code
són força semblants. Però a la primera, Algèria és ALG mentre que a la segona és DZA. Angola tampoc coincideix. Per tant, els marc de dades polity
i covid
no tenen codis de la mateixa nomenclatura. Això ens suposa un problema per unir els dos marcs de dades, ja que per enganxar-los hauríem de trobar alguna columna que sigui exactament igual a un i altre.
Anem a veure quines possibilitats ens ofereix el paquet countrycode
si mirem el cas d’Algèria:
filter(codelist_panel, country.name.en == "Algeria", year == 2010) %>%
gather()
## # A tibble: 48 × 2
## key value
## <chr> <chr>
## 1 country.name.en Algeria
## 2 year 2010
## 3 ar5 MAF
## 4 cctld .dz
## 5 continent Africa
## 6 country.name.de Algerien
## 7 country.name.de.regex algerien
## 8 country.name.en.regex algeria
## 9 cowc ALG
## 10 cown 615
## # … with 38 more rows
Observem que hi ha vàries columnes on Algèria està codificat com a ALG, però deduïm que la columna que ens interessa és la p4c
, ja que segons ?codelist
respon p4c: Polity IV character country code. En el cas del segon marc de dades, veiem que hi ha vàries bases de dades que tenen Algèria codificat com a DZA. Haurem de provar diverses combinacions per trobar la correcta. El codi de partida per unir les dues bases de dades és el següent:
polity %>%
mutate(country = countrycode(country, "country.name.en", "cldr.????.????"), #introduir idioma
scode = countrycode(scode, "p4c", "????????")) %>% #introduir codi país
inner_join(covid, by = c("scode" = "code")) %>%
rename(country = country.x) %>%
select(-country.y)
EXERCICI FINAL: Modifiqueu els interrogants del codi anterior i proveu de trobar la combinació que us permeti crear un marc de dades semblant al que trobareu representat a la Taula 7.
- A la primera part heu d’introduir el codi d’idioma que vulgueu (no és necessari que sigui el que apareix a l’exemple).
- A la segona part heu d’introduir una nomenclatura de codi de país per tal que el codi del primer marc de dades s’ajusti al del segon marc de dades.
- Per decidir quin és el codi de país més apropiat, heu de prioritzar el que us generi el marc de dades amb més observacions (el que tingui el major nombre de files possible).
ccode | scode | country | polity2 | cases | deaths | popData2019 | continentExp |
---|---|---|---|---|---|---|---|
700 | AFG | Afganistan | -1 | 684 | 21 | 38041757 | Asia |
339 | ALB | Albània | 9 | 42 | 0 | 2880913 | Europe |
615 | DZA | Algèria | 2 | 102 | 8 | 43053054 | Africa |
540 | AGO | Angola | -2 | 17 | 0 | 31825299 | Africa |
160 | ARG | Argentina | 9 | 1239 | 18 | 44780675 | America |
371 | ARM | Armènia | 7 | 428 | 10 | 2957728 | Europe |
900 | AUS | Austràlia | 10 | 9 | 0 | 25203200 | Oceania |
305 | AUT | Àustria | 10 | 34 | 1 | 8858775 | Europe |
373 | AZE | Azerbaidjan | -7 | 339 | 4 | 10047719 | Europe |
692 | BHR | Bahrain | -10 | 0 | 2 | 1641164 | Asia |
211 | BEL | Bèlgica | 8 | 132 | 10 | 11455519 | Europe |
434 | BEN | Benín | 7 | 0 | 0 | 11801151 | Africa |
439 | BFA | Burkina Faso | 6 | 0 | 0 | 20321383 | Africa |
760 | BTN | Bhutan | 7 | 3 | 0 | 763094 | Asia |
370 | BLR | Belarús | -7 | 801 | 6 | 9452409 | Europe |
771 | BGD | Bangladesh | -6 | 3190 | 37 | 163046173 | Asia |
145 | BOL | Bolívia | 7 | 637 | 25 | 11513102 | America |
346 | BIH | Bòsnia i Hercegovina | NA | 49 | 1 | 3300998 | Europe |
571 | BWA | Botswana | 8 | 6 | 0 | 2303703 | Africa |
140 | BRA | Brasil | 8 | 32913 | 1274 | 211049519 | America |
516 | BDI | Burundi | -1 | 0 | 0 | 11530577 | Africa |
355 | BGR | Bulgària | 9 | 0 | 0 | 7000039 | Europe |
811 | KHM | Cambodja | -4 | 0 | 0 | 16486542 | Asia |
20 | CAN | Canadà | 10 | 472 | 63 | 37411038 | America |
471 | CMR | Camerun | -4 | 248 | 6 | 25876387 | Africa |
402 | CPV | Cap Verd | 10 | 30 | 0 | 549936 | Africa |
482 | CAF | República Centreafricana | 6 | 64 | 1 | 4745179 | Africa |
483 | TCD | Txad | -2 | 2 | 1 | 15946882 | Africa |
155 | CHL | Xile | 10 | 5737 | 192 | 18952035 | America |
710 | CHN | Xina | -7 | 11 | 0 | 1433783692 | Asia |
100 | COL | Colòmbia | 7 | 1604 | 61 | 50339443 | America |
581 | COM | Comores | -3 | 0 | 0 | 850891 | Africa |
484 | COG | Congo - Brazzaville | -4 | 17 | 1 | 5380504 | Africa |
94 | CRI | Costa Rica | 10 | 86 | 1 | 5047561 | America |
344 | HRV | Croàcia | 9 | 2 | 0 | 4076246 | Europe |
40 | CUB | Cuba | -5 | 6 | 0 | 11333484 | America |
352 | CYP | Xipre | 10 | 2 | 0 | 875899 | Europe |
316 | CZE | Txèquia | 9 | 73 | 0 | 10649800 | Europe |
390 | DNK | Dinamarca | 10 | 15 | 0 | 5806081 | Europe |
522 | DJI | Djibouti | 3 | 42 | 0 | 973557 | Africa |
42 | DOM | República Dominicana | 7 | 393 | 6 | 10738957 | America |
130 | ECU | Equador | 5 | 523 | 30 | 17373657 | America |
651 | EGY | Egipte | -4 | 1455 | 36 | 100388076 | Africa |
411 | GNQ | Guinea Equatorial | -6 | 0 | 0 | 1355982 | Africa |
531 | ERI | Eritrea | -7 | 0 | 0 | 3497117 | Africa |
366 | EST | Estònia | 9 | 11 | 0 | 1324820 | Europe |
529 | ETH | Etiòpia | 1 | 170 | 3 | 112078727 | Africa |
860 | TLS | Timor Oriental | 8 | 0 | 0 | 129312 | Asia |
375 | FIN | Finlàndia | 10 | 15 | 0 | 5517919 | Europe |
950 | FJI | Fiji | 2 | 0 | 0 | 889955 | Oceania |
220 | FRA | França | 10 | 545 | 23 | 67012883 | Europe |
481 | GAB | Gabon | 3 | 81 | 1 | 2172578 | Africa |
420 | GMB | Gàmbia | 4 | 0 | 0 | 2347696 | Africa |
452 | GHA | Ghana | 8 | 157 | 0 | 30417858 | Africa |
255 | DEU | Alemanya | 10 | 555 | 26 | 83019213 | Europe |
404 | GNB | Guinea Bissau | 6 | 0 | 0 | 1920917 | Africa |
350 | GRC | Grècia | 10 | 10 | 0 | 10724599 | Europe |
372 | GEO | Geòrgia | 7 | 9 | 0 | 3996762 | Europe |
90 | GTM | Guatemala | 8 | 355 | 27 | 17581476 | America |
438 | GIN | Guinea | 4 | 0 | 0 | 12771246 | Africa |
110 | GUY | Guyana | 7 | 0 | 0 | 782775 | America |
41 | HTI | Haití | 5 | 134 | 2 | 11263079 | America |
91 | HND | Hondures | 7 | 425 | 19 | 9746115 | America |
310 | HUN | Hongria | 10 | 10 | 1 | 9664124 | Europe |
750 | IND | Índia | 9 | 9996 | 357 | 1366417756 | Asia |
850 | IDN | Indonèsia | 9 | 1240 | 36 | 270625567 | Asia |
205 | IRL | Irlanda | 10 | 16 | 4 | 4904240 | Europe |
630 | IRN | Iran | -7 | 2011 | 81 | 82913893 | Asia |
645 | IRQ | Iraq | 6 | 1146 | 34 | 39309789 | Asia |
666 | ISR | Israel | 6 | 87 | 0 | 8519373 | Asia |
325 | ITA | Itàlia | 10 | 202 | 71 | 60550092 | Europe |
437 | CIV | Côte d’Ivoire | 4 | 186 | 3 | 25716554 | Africa |
51 | JAM | Jamaica | 9 | 0 | 0 | 2948277 | America |
663 | JOR | Jordània | -3 | 18 | 0 | 10101697 | Asia |
740 | JPN | Japó | 10 | 41 | 1 | 126860299 | Asia |
501 | KEN | Kenya | 9 | 105 | 1 | 52573967 | Africa |
690 | KWT | Kuwait | -7 | 683 | 2 | 4207077 | Asia |
703 | KGZ | Kirguizistan | 8 | 36 | 0 | 6415851 | Asia |
705 | KAZ | Kazakhstan | -6 | 239 | 6 | 18551428 | Asia |
812 | LAO | Laos | -7 | 0 | 0 | 7169456 | Asia |
367 | LVA | Letònia | 8 | 3 | 0 | 1919968 | Europe |
450 | LBR | Libèria | 7 | 14 | 0 | 4937374 | Africa |
660 | LBN | Líban | 6 | 20 | 0 | 6855709 | Asia |
570 | LSO | Lesotho | 8 | 0 | 0 | 2125267 | Africa |
620 | LBY | Líbia | 0 | 46 | 0 | 6777453 | Africa |
368 | LTU | Lituània | 10 | 6 | 2 | 2759631 | Europe |
212 | LUX | Luxemburg | 10 | 3 | 0 | 61573 | Europe |
435 | MRT | Mauritània | -2 | 0 | 0 | 4525698 | Africa |
343 | MKD | Macedònia del Nord | 9 | 125 | 7 | 2083458 | Europe |
580 | MDG | Madagascar | 6 | 24 | 1 | 26969306 | Africa |
820 | MYS | Malàisia | 7 | 2 | 1 | 31949789 | Asia |
590 | MUS | Maurici | 10 | 0 | 0 | 126967 | Africa |
553 | MWI | Malawi | 6 | 0 | 0 | 18628749 | Africa |
70 | MEX | Mèxic | 8 | 4883 | 708 | 127575529 | America |
359 | MDA | Moldàvia | 9 | 296 | 6 | 4043258 | Europe |
432 | MLI | Mali | 5 | 81 | 2 | 19658023 | Africa |
348 | MNE | Montenegro | 9 | 0 | 0 | 627988 | Europe |
712 | MNG | Mongòlia | 10 | 0 | 0 | 3225166 | Asia |
600 | MAR | Marroc | -4 | 18 | 0 | 36471766 | Africa |
775 | MMR | Myanmar (Birmània) | 8 | 3 | 0 | 54045422 | Asia |
541 | MOZ | Moçambic | 5 | 19 | 0 | 30366043 | Africa |
565 | NAM | Namíbia | 6 | 0 | 0 | 2494524 | Africa |
790 | NPL | Nepal | 7 | 279 | 0 | 28608715 | Asia |
920 | NZL | Nova Zelanda | 10 | 0 | 0 | 4783062 | Oceania |
93 | NIC | Nicaragua | 6 | 155 | 9 | 6545503 | America |
475 | NGA | Nigèria | 7 | 409 | 17 | 200963603 | Africa |
436 | NER | Níger | 5 | 0 | 0 | 23310719 | Africa |
385 | NOR | Noruega | 10 | 13 | 0 | 5328212 | Europe |
210 | NLD | Països Baixos | 10 | 184 | 11 | 17282163 | Europe |
698 | OMN | Oman | -8 | 689 | 1 | 4974992 | Asia |
770 | PAK | Pakistan | 7 | 5834 | 101 | 216565317 | Asia |
95 | PAN | Panamà | 9 | 656 | 10 | 424644 | America |
150 | PRY | Paraguai | 9 | 15 | 0 | 7044639 | America |
135 | PER | Perú | 9 | 5087 | 165 | 32510462 | America |
840 | PHL | Filipines | 8 | 740 | 10 | 108116622 | Asia |
910 | PNG | Papua Nova Guinea | 5 | 0 | 0 | 8776119 | Oceania |
290 | POL | Polònia | 10 | 197 | 23 | 37972812 | Europe |
235 | PRT | Portugal | 10 | 294 | 3 | 10276617 | Europe |
694 | QAT | Qatar | -10 | 1716 | 4 | 2832071 | Asia |
732 | KOR | Corea del Sud | 8 | 45 | 0 | 51225321 | Asia |
360 | ROU | Romania | 9 | 196 | 15 | 19414458 | Europe |
365 | RUS | Rússia | 4 | 8404 | 217 | 114587226 | Europe |
517 | RWA | Ruanda | -3 | 13 | 0 | 12626938 | Africa |
560 | ZAF | República de Sud-àfrica | 9 | 2430 | 48 | 58558267 | Africa |
92 | SLV | El Salvador | 8 | 83 | 4 | 645355 | America |
670 | SAU | Aràbia Saudita | -10 | 3717 | 36 | 34268529 | Asia |
626 | SDN | Sudan | -4 | 185 | 17 | 42813237 | Africa |
433 | SEN | Senegal | 7 | 124 | 2 | 16296362 | Africa |
342 | SRB | Sèrbia | 8 | 66 | 1 | 8772228 | Europe |
451 | SLE | Sierra Leone | 7 | 37 | 0 | 7813207 | Africa |
830 | SGP | Singapur | -2 | 451 | 0 | 5804343 | Asia |
317 | SVK | Eslovàquia | 10 | 2 | 0 | 5450421 | Europe |
349 | SVN | Eslovènia | 10 | 2 | 1 | 2080908 | Europe |
520 | SOM | Somàlia | 5 | 36 | 0 | 15442906 | Africa |
230 | ESP | Espanya | 10 | 427 | 0 | 46937060 | Europe |
780 | LKA | Sri Lanka | 6 | 10 | 0 | 21323734 | Asia |
525 | SSD | Sudan del Sud | 0 | 0 | 0 | 11062114 | Africa |
115 | SUR | Surinam | 5 | 0 | 0 | 581363 | America |
572 | SWZ | eSwatini | -9 | 27 | 0 | 1148133 | Africa |
380 | SWE | Suècia | 10 | 890 | 78 | 10230185 | Europe |
225 | CHE | Suïssa | 10 | 23 | 12 | 8591361 | Europe |
652 | SYR | Síria | -9 | 6 | 0 | 17070132 | Asia |
702 | TJK | Tadjikistan | -3 | 73 | 0 | 9321023 | Asia |
510 | TZA | Tanzània | 3 | 0 | 0 | 58005461 | Africa |
800 | THA | Tailàndia | -3 | 0 | 0 | 69625581 | Asia |
461 | TGO | Togo | -2 | 21 | 0 | 8082359 | Africa |
52 | TTO | Trinitat i Tobago | 10 | 0 | 0 | 1394969 | America |
616 | TUN | Tunísia | 7 | 0 | 0 | 11694721 | Africa |
640 | TUR | Turquia | -4 | 922 | 17 | 83429607 | Asia |
696 | ARE | Emirats Àrabs Units | -8 | 603 | 1 | 9770526 | Asia |
500 | UGA | Uganda | -1 | 8 | 0 | 44269587 | Africa |
200 | GBR | Regne Unit | 8 | 1003 | 245 | 66647112 | Europe |
369 | UKR | Ucraïna | 4 | 525 | 23 | 43993643 | Europe |
165 | URY | Uruguai | 10 | 1 | 0 | 3461731 | America |
2 | USA | Estats Units | 8 | 20614 | 918 | 329064917 | America |
704 | UZB | Uzbekistan | -9 | 148 | 1 | 32981715 | Asia |
101 | VEN | Veneçuela | -3 | 106 | 0 | 28515829 | America |
818 | VNM | Vietnam | -7 | 0 | 0 | 96462108 | Asia |
679 | YEM | Iemen | 0 | 36 | 2 | 29161922 | Asia |
490 | COD | Congo - Kinshasa | -3 | 131 | 6 | 86790568 | Africa |
551 | ZMB | Zàmbia | 6 | 52 | 0 | 17861034 | Africa |
552 | ZWE | Zimbàbue | 4 | 6 | 0 | 14645473 | Africa |