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"