1.5 Un exemple: quants estats hi ha al món?

La primera pregunta que t’has de fer abans de començar a buscar dades en relacions internacionals és ¿de quantes unitats he de recollir dades? ¿quants estats hi ha al món?. En termes més generals i compatibles amb la resta de disciplines científiques, ¿de quantes unitats d’anàlisi estem parlant? I les notícies no són pas massa bones, ja que el nombre concret varia en funció de l’observador. Per a un xinès, Taiwan no és cap estat. Per a un iranià, Israel tampoc no ho és. No obstant aquestes discussions polítiques, el cert és que sol haver-hi cert consens acadèmic, manifestat a la base de dades d’unitats del sistema internacional del projecte Correlates of War.

Els criteris per incorporar estats, però, són força restrictius: - Que sigui membre de les Nacions Unides. - Població d’almenys 500.000 habitants. - Reconeixement d’almenys dos potències majors. - Que el seu estatus estigui mantingut almenys durant un mes.

Per incorporar les dades a R fem servir la funció read.table(), que és la que permem que arxius de dades separats per comes (amb l’extensió .csv) puguin ser llegits de manera sistemàtica pel programa, de manera que entre les comes (o les tabulacions, o els punts i coma, com definim nosaltres) hi hagi les variables de manera igualment ordenada a cada línia. La funció l’assignem a una cadena de text (en aquest cas states) que té el nom que li vulguem donar (tot i que no es permet que tingui espais) i amb aquest nom ens queda un objecte desat que després explorem amb la funció str(), per saber-ne la seva estructura.

url <- "http://www.correlatesofwar.org/data-sets/state-system-membership/system2016/at_download/file"
states <- read.table(url, header = TRUE, sep = ",", fill = TRUE)
str(states)
## 'data.frame':    15951 obs. of  4 variables:
##  $ stateabb: Factor w/ 217 levels "AAB","AFG","ALB",..: 205 202 141 65 186 177 153 16 72 13 ...
##  $ ccode   : int  2 200 210 220 225 230 235 245 255 267 ...
##  $ year    : int  1816 1816 1816 1816 1816 1816 1816 1816 1816 1816 ...
##  $ version : int  2016 2016 2016 2016 2016 2016 2016 2016 2016 2016 ...

Tenim, doncs, 15,951 observacions i 4 variables (l’abreujatura stateabb, el codi intern de la base de dades del Correlates of War ccode, l’any year i la versió de la base de dades version). Cada observació correspon a un estat i un any.

Quants estats hi havia a l’inici del període cobert per la base de dades (1816) i quants n’hi ha ara? Per calcular-ho enviem a través d’una “canonada” (%>%) l’objecte states a la funció ‘group_by()’ que agrupa les observacions per any. Després fem un resum per any del nombre (n()) d’observacions i li assignem el nom N a la nova variable creada, i finalment ho filtrem pel valor mínim o (|) màxim de l’any.

states %>%
  group_by(year) %>%
  summarize(N = n()) %>%
  filter(year == min(year) | year == max(year))
## # A tibble: 2 x 2
##    year     N
##   <int> <int>
## 1  1816    23
## 2  2016   195

A nivell més pràctic, sempre es pot recórrer a la llista de la normativa ISO-3166-1 que estandarditza els noms dels estats. Sembla una qüestió menor, però en realitat dóna molts mals de cap tenir noms diferents per als països a les diferents bases de dades, de manera que ajuntar dades de diferents llocs pot portar a fer desaparèixer fàcilment el Regne Unit de la Gran Bretanya i Irlanda del Nord (que seria el nom “normalitzat” / “estàndard” / oficial), ja que en alguns llocs és “Regne Unit”, en altres “Gran Bretanya”, en altres simplement l’abreujatura “UK”. Per sort, en R hi ha un paquet (countrycode) que permet passar entre diferents bases de dades minimitzant aquests problemes.

library(countrycode)
countrycode("United Kingdom", origin = "country.name", destination = "cowc")
## [1] "UKG"
countrycode("United Kingdom", origin = "country.name", destination = "cown") 
## [1] 200
countrycode("United Kingdom", origin = "country.name", destination = "eurostat") 
## [1] "UK"
countrycode("United Kingdom", origin = "country.name", destination = "wb") 
## [1] "GBR"