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.

Número d'estats/any segons diverses bases de dades

Figure 1: Número d’estats/any segons diverses bases de dades

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.

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:

  1. El marc de dades codelist_panel
  2. La funció countrycode()
  3. L’objecte codelist
  4. 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ó.

glimpse(codelist_panel)

CONSOLA: Tingues en compte que el paquet countrycode s’actualitza sovint, pel qual les dades que apareixen en aquesta web poden variar respecte a les que apareixen a la teva consola. Fixa’t en les de la teva consola.

## Rows: 28,381
## 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, 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             <dbl> 142, 142, 142, 142, 142, 142, 142, 142, 142…
## $ un.regionintermediate.code <dbl> NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA,…
## $ un.regionsub.code          <dbl> 34, 34, 34, 34, 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:

  1. 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.
  2. Observa la Figura 1 i respon breument:
  1. Per què hi ha un augment tant important de països el 1900?
  2. Per què hi ha tanta diferència entre cowc i p4c i la resta entre 1900 i 1960?
  3. Per què vdem, imf, fao o iso3n, que segueixen un mateix patró fins a 1950, segueixen línies diferents a partir de llavors?
  4. Escull una d’aquestes institucions i investiga la metodologia i la definició d’estat que fa servir.
  1. 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, mantenint només els valors corresponents a l’any 2000 i seleccionant només unes poques columnes. Veiem que els codis 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.

code <- as_tibble(countrycode::codelist_panel)
cc <- code %>%
  filter(year == 2000) %>% 
  select(country = country.name.en, iso2c, iso3c, iso3n, cowc, cown, eurostat, imf) %>%
  head(20)
cc
Table 1: Codis de països
countryiso2ciso3ciso3ncowccowneurostatimf
AfghanistanAFAFG4AFG700AF512
AlbaniaALALB8ALB339AL914
AlgeriaDZDZA12ALG615DZ612
AndorraADAND20AND232ADNA
AngolaAOAGO24ANG540AO614
Antigua & BarbudaAGATG28AAB58AG311
ArgentinaARARG32ARG160AR213
ArmeniaAMARM51ARM371AM911
AustraliaAUAUS36AUL900AU193
AustriaATAUT40AUS305AT122
AzerbaijanAZAZE31AZE373AZ912
BahamasBSBHS44BHM31BS313
BahrainBHBHR48BAH692BH419
BangladeshBDBGD50BNG771BD513
BarbadosBBBRB52BAR53BB316
BelarusBYBLR112BLR370BY913
BelgiumBEBEL56BEL211BE124
BelizeBZBLZ84BLZ80BZ339
BeninBJBEN204BEN434BJ638
BhutanBTBTN64BHU760BT514

Exercici 2: 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” pels països en qüestió) haureu de saber primer els noms exactes dels països. Ho podreu esbrinar amb unique(code$country.name.en).
  • També canviarem algunes columnes. Podeu obtenir una llista de les columnes amb names(code).
cc1 <- code %>%
  filter(country.name.en %in% c("Country 1", "Country 2"), #afegiu dos o més països, assegureu-vos que escriviu el nom de cada país correctament
         year == 2000) %>% # 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:

countrycodegdp
FranceFR30000
GermanyGE35000
countrycodelang
French RepublicFRAFrench
Federal Republic of GermanyFRGGerman

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 amb wb 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

Exercici 3: 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.

Table 2: Marc de dades md_agr
countrycodeyeardempib_capagr
FranceFRN1980TRUE12672.1856.8
FranceFRN2010TRUE40638.3352.8
United KingdomUKG1980TRUE10032.0676.8
United KingdomUKG2010TRUE38893.0271.2
PolandPOL1980FALSE5241.7564.5
PolandPOL2010TRUE12597.8647.2
CongoCON1980FALSE927.1030.8
CongoCON2010FALSE2737.3431.0

Exercici 4: 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:

Table 3: Noms de països CLDR
CodeExample
cldr.variant.muaTF
cldr.name.hyՖրանսիական Հարավային Տարածքներ
cldr.name.seTF
cldr.name.ltPrancūzijos Pietų sritys
cldr.variant.heהטריטוריות הדרומיות של צרפת
cldr.variant.ar_lyالأقاليم الجنوبية الفرنسية
cldr.short.swHimaya za Kusini za Kifaranza
cldr.variant.bn_inফরাসী দক্ষিণাঞ্চল
cldr.short.igỤmụ ngalaba Frenchi Southern
cldr.variant.lvFrancijas Dienvidjūru teritorija
cldr.short.ccp𑄜𑄢𑄥𑄩 𑄘𑄧𑄉𑄨𑄚𑄧 𑄎𑄉
cldr.short.luTF
cldr.variant.teఫ్రెంచ్ దక్షిణ ప్రాంతాలు
cldr.variant.urفرانسیسی جنوبی خطے
cldr.short.plFrancuskie Terytoria Południowe i Antarktyczne
cldr.short.miTF
cldr.short.glTerritorios Austrais Franceses
cldr.name.fr_beTerres australes françaises
cldr.name.tzmTF
cldr.name.bezTF
cldr.name.nbDe franske sørterritorier
cldr.variant.yavTF
cldr.name.jvWilayah Prancis nang Kutub Kidul
cldr.name.lktTF
cldr.name.deFranzösische Süd- und Antarktisgebiete

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.

Exercici 5: 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.

  1. Intenteu identificar les variables que corresponen al rus, el coreà, el japonès i el croat.
  2. 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$country <- countrycode(cat$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
Table 4: Marc de dades en català
countryiso2ciso3ciso3ncowccowneurostatimf
AfganistanAFAFG4AFG700AF512
AlbàniaALALB8ALB339AL914
AlgèriaDZDZA12ALG615DZ612
AndorraADAND20AND232ADNA
AngolaAOAGO24ANG540AO614
Antigua i BarbudaAGATG28AAB58AG311
ArgentinaARARG32ARG160AR213
ArmèniaAMARM51ARM371AM911
AustràliaAUAUS36AUL900AU193
ÀustriaATAUT40AUS305AT122
AzerbaidjanAZAZE31AZE373AZ912
BahamesBSBHS44BHM31BS313
BahrainBHBHR48BAH692BH419
BangladeshBDBGD50BNG771BD513
BarbadosBBBRB52BAR53BB316
BelarúsBYBLR112BLR370BY913
BèlgicaBEBEL56BEL211BE124
BelizeBZBLZ84BLZ80BZ339
BenínBJBEN204BEN434BJ638
BhutanBTBTN64BHU760BT514

Exercici 6: 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
?????$country <- countrycode(????$country, #indiqueu el nom de l'objecte creat
                           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.

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)
Table 5: Índex de democràcia Polity V
ccodescodecountrypolity2
700AFGAfghanistan-1
339ALBAlbania9
615ALGAlgeria2
540ANGAngola-2
160ARGArgentina9
371ARMArmenia7

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)

Table 6: Dades Covid-19 el 10 de juny de 2020
codecountrycasesdeathspopData2019continentExp
AFGAfghanistan6842138041757Asia
ALBAlbania4202880913Europe
DZAAlgeria102843053054Africa
ANDAndorra0077146Europe
AGOAngola17031825299Africa
AIAAnguilla0014872America

Exercici 7: Examineu els marcs de dades polity i covid tal com t’apareixen a les taules 5 i 6:

  1. 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?
  2. 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 x 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.

  1. A la primera part heu d’introduir el codi d’idioma que vulgueu (no és necessari que sigui el que apareix a l’exemple).
  2. 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.
  3. 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).
Table 7: Dades de Covid19 i democràcia
ccodescodecountrypolity2casesdeathspopData2019continentExp
700AFGAfganistan-16842138041757Asia
339ALBAlbània94202880913Europe
615DZAAlgèria2102843053054Africa
540AGOAngola-217031825299Africa
160ARGArgentina912391844780675America
371ARMArmènia7428102957728Europe
900AUSAustràlia109025203200Oceania
305AUTÀustria103418858775Europe
373AZEAzerbaidjan-7339410047719Europe
692BHRBahrain-10021641164Asia
211BELBèlgica81321011455519Europe
434BENBenín70011801151Africa
439BFABurkina Faso60020321383Africa
760BTNBhutan730763094Asia
370BLRBelarús-780169452409Europe
771BGDBangladesh-6319037163046173Asia
145BOLBolívia76372511513102America
346BIHBòsnia i HercegovinaNA4913300998Europe
571BWABotswana8602303703Africa
140BRABrasil8329131274211049519America
516BDIBurundi-10011530577Africa
355BGRBulgària9007000039Europe
811KHMCambodja-40016486542Asia
20CANCanadà104726337411038America
471CMRCamerun-4248625876387Africa
402CPVCap Verd10300549936Africa
482CAFRepública Centreafricana66414745179Africa
483TCDTxad-22115946882Africa
155CHLXile10573719218952035America
710CHNXina-71101433783692Asia
100COLColòmbia716046150339443America
581COMComores-300850891Africa
484COGCongo - Brazzaville-41715380504Africa
94CRICosta Rica108615047561America
344HRVCroàcia9204076246Europe
40CUBCuba-56011333484America
352CYPXipre1020875899Europe
316CZETxèquia973010649800Europe
390DNKDinamarca101505806081Europe
522DJIDjibouti3420973557Africa
42DOMRepública Dominicana7393610738957America
130ECUEquador55233017373657America
651EGYEgipte-4145536100388076Africa
411GNQGuinea Equatorial-6001355982Africa
531ERIEritrea-7003497117Africa
366ESTEstònia91101324820Europe
529ETHEtiòpia11703112078727Africa
860TLSTimor Oriental800129312Asia
375FINFinlàndia101505517919Europe
950FJIFiji200889955Oceania
220FRAFrança105452367012883Europe
481GABGabon38112172578Africa
420GMBGàmbia4002347696Africa
452GHAGhana8157030417858Africa
255DEUAlemanya105552683019213Europe
404GNBGuinea Bissau6001920917Africa
350GRCGrècia1010010724599Europe
372GEOGeòrgia7903996762Europe
90GTMGuatemala83552717581476America
438GINGuinea40012771246Africa
110GUYGuyana700782775America
41HTIHaití5134211263079America
91HNDHondures7425199746115America
310HUNHongria101019664124Europe
750INDÍndia999963571366417756Asia
850IDNIndonèsia9124036270625567Asia
205IRLIrlanda101644904240Europe
630IRNIran-720118182913893Asia
645IRQIraq611463439309789Asia
666ISRIsrael68708519373Asia
325ITAItàlia102027160550092Europe
437CIVCôte d’Ivoire4186325716554Africa
51JAMJamaica9002948277America
663JORJordània-318010101697Asia
740JPNJapó10411126860299Asia
501KENKenya9105152573967Africa
690KWTKuwait-768324207077Asia
703KGZKirguizistan83606415851Asia
705KAZKazakhstan-6239618551428Asia
812LAOLaos-7007169456Asia
367LVALetònia8301919968Europe
450LBRLibèria71404937374Africa
660LBNLíban62006855709Asia
570LSOLesotho8002125267Africa
620LBYLíbia04606777453Africa
368LTULituània10622759631Europe
212LUXLuxemburg103061573Europe
435MRTMauritània-2004525698Africa
343MKDMacedònia del Nord912572083458Europe
580MDGMadagascar624126969306Africa
820MYSMalàisia72131949789Asia
590MUSMaurici1000126967Africa
553MWIMalawi60018628749Africa
70MEXMèxic84883708127575529America
359MDAMoldàvia929664043258Europe
432MLIMali581219658023Africa
348MNEMontenegro900627988Europe
712MNGMongòlia10003225166Asia
600MARMarroc-418036471766Africa
775MMRMyanmar (Birmània)83054045422Asia
541MOZMoçambic519030366043Africa
565NAMNamíbia6002494524Africa
790NPLNepal7279028608715Asia
920NZLNova Zelanda10004783062Oceania
93NICNicaragua615596545503America
475NGANigèria740917200963603Africa
436NERNíger50023310719Africa
385NORNoruega101305328212Europe
210NLDPaïsos Baixos101841117282163Europe
698OMNOman-868914974992Asia
770PAKPakistan75834101216565317Asia
95PANPanamà965610424644America
150PRYParaguai91507044639America
135PERPerú9508716532510462America
840PHLFilipines874010108116622Asia
910PNGPapua Nova Guinea5008776119Oceania
290POLPolònia101972337972812Europe
235PRTPortugal10294310276617Europe
694QATQatar-10171642832071Asia
732KORCorea del Sud845051225321Asia
360ROURomania91961519414458Europe
365RUSRússia48404217114587226Europe
517RWARuanda-313012626938Africa
560ZAFRepública de Sud-àfrica924304858558267Africa
92SLVEl Salvador8834645355America
670SAUAràbia Saudita-1037173634268529Asia
626SDNSudan-41851742813237Africa
433SENSenegal7124216296362Africa
342SRBSèrbia86618772228Europe
451SLESierra Leone73707813207Africa
830SGPSingapur-245105804343Asia
317SVKEslovàquia10205450421Europe
349SVNEslovènia10212080908Europe
520SOMSomàlia536015442906Africa
230ESPEspanya10427046937060Europe
780LKASri Lanka610021323734Asia
525SSDSudan del Sud00011062114Africa
115SURSurinam500581363America
572SWZeSwatini-92701148133Africa
380SWESuècia108907810230185Europe
225CHESuïssa1023128591361Europe
652SYRSíria-96017070132Asia
702TJKTadjikistan-37309321023Asia
510TZATanzània30058005461Africa
800THATailàndia-30069625581Asia
461TGOTogo-22108082359Africa
52TTOTrinitat i Tobago10001394969America
616TUNTunísia70011694721Africa
640TURTurquia-49221783429607Asia
696AREEmirats Àrabs Units-860319770526Asia
500UGAUganda-18044269587Africa
200GBRRegne Unit8100324566647112Europe
369UKRUcraïna45252343993643Europe
165URYUruguai10103461731America
2USAEstats Units820614918329064917America
704UZBUzbekistan-9148132981715Asia
101VENVeneçuela-3106028515829America
818VNMVietnam-70096462108Asia
679YEMIemen036229161922Asia
490CODCongo - Kinshasa-3131686790568Africa
551ZMBZàmbia652017861034Africa
552ZWEZimbàbue46014645473Africa

Referències

Arel-Bundock, Vincent, Nils Enevoldsen, and CJ Yetman. 2018. Countrycode An R package to convert country names and country codes.” Journal of Open Source Software 28 (3): 848.
Marshall, Monty G., and Ted Robert Gurr. 2020. Polity V. Political Regime Characteristics and Transitions, 1800-2018.” Center for Systemic Peace.
Next