Mostrar código.
knitr::include_graphics("aadd_unit2.png")En base al marco de datos ‘International Trade 1870-2014 v4.0’ (Barbieri y Keshk 2016) de Correlates of War y atendiendo a las indicaciones del módulo de estudio (Mas y Vall-Prat 2024), se responde a las siguientes cuestiones:
knitr::include_graphics("aadd_unit2.png")Las observaciones son cada uno de los casos que se estudian y corresponden al número de filas, por lo que el marco cuenta con un total de 1.773.656, de las cuales en la imagen sólo son visibles 10. Por su parte, las variables son las distintas características de los fenómenos observados y se agrupan en columnas, es decir, 10.
La unidad de observación hace referencia a la manera en la que se recopilan los datos para obtener información sobre la unidad de análisis. Así, la unidad de análisis es el intercambio comercial entre dos países (importer1 & importer2) y la unidad de observación es año (year) - países (importer1 & importer2) - flujo comercial (flow1 & flow2).
Las variables del marco de datos son de los siguientes tipos:
ccode1-2: nominal. Los códigos de país no tienen significado cuantitativo ni aportan información al realizar operaciones matemáticas con ellos.year: de intervalo. La distancia entre los valores aporta información.importer1-2: nominal. Se trata de variables no cuantificables numéricamente.flow1-2, smoothflow1-2, smoothtotrade: de ratio. Operan con las propiedades matemáticas.El nivel de análisis es el propio de la segunda imagen, en el que las observaciones se agrupan en torno a las unidades de análisis que corresponden a los elementos que conforman el sistema internacional, es decir, los Estados y su evolución a lo largo del tiempo.
Una pregunta cuya respuesta podría obtenerse trabajando con el marco de datos adjunto sería: ¿en qué año el flujo comercial entre el país ‘X’ y el país ‘Y’ ha experimentado un mayor crecimiento respecto al año anterior desde 1920 hasta el día de hoy?
Las falacias ecológicas se producen cuando la unidad de análisis y la de observación no coinciden o, dicho de otro modo, cuando se trabaja en dos niveles de análisis distintos. A modo de ejemplo, debido a que el marco utiliza datos agregados (segunda imagen), si se produjese un incremento en el flujo comercial entre dos países de un año al siguiente, algún observador podría pensar, de manera errónea, que al nivel del individuo (primera imagen), todos los comerciantes de esos países habrían aumentado su flujo de comercio respecto al año anterior. Esto, si bien podría ser cierto, se antoja muy poco probable. En cambio, una situación más verosímil sería aquella en la que algunos comerciantes hubieran mejorado y otros empeorado, pero el volumen total del flujo positivo compensase el negativo y arrojase un resultado final favorable.
Una vez cargado el marco de datos ‘EU Ideology Scores’, se le aplican distintas funciones para disponer de la información que se quiere visualizar:
euis <- read_xlsx("eu_ideology_scores.xlsx")Con glimpse() se obtiene la estructura general del marco de datos, como el total de observaciones (495) y el de variables (10), así como los nombres de éstas últimas:
glimpse(euis)Rows: 495
Columns: 10
$ country_name <chr> "Belgium", "Belgium", "Belgium", "Belg…
$ region_name <chr> "Bruxelles", "Bruxelles", "Bruxelles",…
$ party_name <chr> "Front Démocratique des Francophones",…
$ party_abbreviation <chr> "FDF/DéFI", "FDF/DéFI", "FDF/DéFI", "F…
$ election_year_regional <dbl> NA, NA, NA, NA, NA, NA, 1989, 1995, 19…
$ elec_date_reg <chr> NA, NA, NA, NA, NA, NA, "6/18/1989", "…
$ election_year_national_previous <dbl> 1971, 1974, 1977, 1978, 1981, 1985, 19…
$ elec_date_nat <chr> "26125", "27305", "4/17/1977", "12/17/…
$ eu <dbl> 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6,…
$ dum_eu <dbl> 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,…
Usando head() aparece un resumen compacto de las primeras observaciones del marco de datos, permitiendo familiarizarse con su formato y la información que contienen algunas de las variables:
head(euis)# A tibble: 6 × 10
country_name region_name party_name party_abbreviation election_year_regional
<chr> <chr> <chr> <chr> <dbl>
1 Belgium Bruxelles Front Démo… FDF/DéFI NA
2 Belgium Bruxelles Front Démo… FDF/DéFI NA
3 Belgium Bruxelles Front Démo… FDF/DéFI NA
4 Belgium Bruxelles Front Démo… FDF/DéFI NA
5 Belgium Bruxelles Front Démo… FDF/DéFI NA
6 Belgium Bruxelles Front Démo… FDF/DéFI NA
# ℹ 5 more variables: elec_date_reg <chr>,
# election_year_national_previous <dbl>, elec_date_nat <chr>, eu <dbl>,
# dum_eu <dbl>
Por último, summary() extrae estadísticas de las variables, por ejemplo, su tipo, los vectores que utilizan y sus valores máximos y mínimos, entre otras:
summary(euis) country_name region_name party_name party_abbreviation
Length:495 Length:495 Length:495 Length:495
Class :character Class :character Class :character Class :character
Mode :character Mode :character Mode :character Mode :character
election_year_regional elec_date_reg election_year_national_previous
Min. :1969 Length:495 Min. :1969
1st Qu.:1992 Class :character 1st Qu.:1987
Median :2003 Mode :character Median :1997
Mean :2001 Mean :1997
3rd Qu.:2011 3rd Qu.:2008
Max. :2019 Max. :2019
NA's :66 NA's :11
elec_date_nat eu dum_eu
Length:495 Min. :1.00 Min. :0.0000
Class :character 1st Qu.:2.00 1st Qu.:0.0000
Mode :character Median :4.00 Median :1.0000
Mean :3.91 Mean :0.6434
3rd Qu.:5.00 3rd Qu.:1.0000
Max. :6.00 Max. :1.0000
NA's :7 NA's :7
El número de países diferentes contenidos en el marco es 7, dato facilitado por la función unique() enlazada a la variable country_name:
unique(euis$country_name)[1] "Belgium" "France" "Germany" "Italy"
[5] "Spain" "Sweden" "United Kingdom"
‘Euskal Herria Bildu’ es un partido político, por tanto, de estar presente en el marco, debería aparecer bajo la variable party_name. Se rescatan las 2 observaciones que lo contienen forzando la igualdad de la citada variable con el nombre del partido mediante ==:
euis[euis$party_name == "Euskal Herria Bildu",]# A tibble: 2 × 10
country_name region_name party_name party_abbreviation election_year_regional
<chr> <chr> <chr> <chr> <dbl>
1 Spain Pais Vasco … Euskal He… EH Bildu 2012
2 Spain Pais Vasco … Euskal He… EH Bildu 2016
# ℹ 5 more variables: elec_date_reg <chr>,
# election_year_national_previous <dbl>, elec_date_nat <chr>, eu <dbl>,
# dum_eu <dbl>
Existen varias funciones que ayudan a modificar los valores de una variable para las observaciones que verifiquen las condiciones que se determinen. En este caso, se selecciona case_match() y se aplican sus efectos sobre la variable party_name para renombrar el partido ‘Social Democratic and Labour Party’ a ‘Social Democratic & Labour Party’. El resto de observaciones mantienen sus valores por defecto para esa variable con la línea de código .default = euis$party_name, que fuerza a la función a asignar el valor original de la línea si la condición no se cumple:
listado <- case_match(euis$party_name,
"Social Democratic and Labour Party" ~ "Social Democratic & Labour Party",
.default = euis$party_name)Las observaciones que se han visto afectadas por el cambio son un total de 14 y pertenecen al intervalo de filas 461:474.
[1] “Front Démocratique des Francophones”
[2] “Front Démocratique des Francophones”
[3] “Front Démocratique des Francophones”
[4] “Front Démocratique des Francophones”
[5] “Front Démocratique des Francophones”
[6] “Front Démocratique des Francophones”
[7] “Front Démocratique des Francophones”
[8] “Front Démocratique des Francophones”
[9] “Front Démocratique des Francophones”
[10] “Front Démocratique des Francophones”
[11] “Front Démocratique des Francophones”
[12] “Front Démocratique des Francophones”
[13] “Front Démocratique des Francophones”
[14] “Rassemblement Wallonie/Rassemblement Wallonie France”
[15] “Rassemblement Wallonie/Rassemblement Wallonie France”
[16] “Rassemblement Wallonie/Rassemblement Wallonie France”
[17] “Rassemblement Wallonie/Rassemblement Wallonie France”
[18] “Rassemblement Wallonie/Rassemblement Wallonie France”
[19] “Rassemblement Wallonie/Rassemblement Wallonie France”
[20] “Rassemblement Wallonie/Rassemblement Wallonie France”
[21] “Rassemblement Wallonie/Rassemblement Wallonie France”
[22] “Rassemblement Wallonie/Rassemblement Wallonie France”
[23] “Rassemblement Wallonie/Rassemblement Wallonie France”
[24] “Rassemblement Wallonie/Rassemblement Wallonie France”
[25] “Rassemblement Wallonie/Rassemblement Wallonie France”
[26] “Rassemblement Wallonie/Rassemblement Wallonie France”
[27] “Rassemblement Wallonie/Rassemblement Wallonie France”
[28] “Nieuw Vlaamse Alliantie”
[29] “Nieuw Vlaamse Alliantie”
[30] “Nieuw Vlaamse Alliantie”
[31] “Nieuw Vlaamse Alliantie”
[32] “Nieuw Vlaamse Alliantie”
[33] “Vlaams Belang”
[34] “Vlaams Belang”
[35] “Vlaams Belang”
[36] “Vlaams Belang”
[37] “Vlaams Belang”
[38] “Vlaams Belang”
[39] “Vlaams Belang”
[40] “Vlaams Belang”
[41] “Vlaams Belang”
[42] “Vlaams Belang”
[43] “Volksunie”
[44] “Volksunie”
[45] “Volksunie”
[46] “Volksunie”
[47] “Volksunie”
[48] “Volksunie”
[49] “Volksunie”
[50] “Volksunie”
[51] “Volksunie”
[52] “Volksunie”
[53] “Pro Duetschsprachige Gemeinschaft”
[54] “Pro Duetschsprachige Gemeinschaft”
[55] “Pro Duetschsprachige Gemeinschaft”
[56] “Pro Duetschsprachige Gemeinschaft”
[57] “Pro Duetschsprachige Gemeinschaft”
[58] “Pro Duetschsprachige Gemeinschaft”
[59] “Pro Duetschsprachige Gemeinschaft”
[60] “Pro Duetschsprachige Gemeinschaft”
[61] “Pro Duetschsprachige Gemeinschaft”
[62] “Pro Duetschsprachige Gemeinschaft”
[63] “Pro Duetschsprachige Gemeinschaft”
[64] “Pro Duetschsprachige Gemeinschaft”
[65] “Wallonie D’Abord”
[66] “Wallonie D’Abord”
[67] “Wallonie D’Abord”
[68] “Alsace d’Abord”
[69] “Alsace d’Abord”
[70] “Alsace d’Abord”
[71] “Alsace d’Abord”
[72] “Alsace d’Abord”
[73] “Alsace d’Abord”
[74] “Union Democratique Bretonne”
[75] “Union Democratique Bretonne”
[76] “Union Democratique Bretonne”
[77] “Union Democratique Bretonne”
[78] “Union Democratique Bretonne”
[79] “Union Democratique Bretonne”
[80] “Parti Breton / Strollad Breizh”
[81] “Parti Breton / Strollad Breizh”
[82] “A Manca”
[83] “A Manca”
[84] “Accolta Naziunale Corsa”
[85] “Accolta Naziunale Corsa”
[86] “Accolta Naziunale Corsa”
[87] “Accolta Naziunale Corsa”
[88] “A Manca Naziunale”
[89] “A Manca Naziunale”
[90] “A Manca Naziunale”
[91] “Corsica Nazione”
[92] “Corsica Nazione”
[93] “Corsica Nazione”
[94] “Corsica Nazione”
[95] “Unione di u populu Cosru”
[96] “Unione di u populu Cosru”
[97] “Unione di u populu Cosru”
[98] “Unione di u populu Cosru”
[99] “Unione di u populu Cosru”
[100] “Unione di u populu Cosru”
[101] “Muvimentu pà l’Autodeterminazione”
[102] “Muvimentu pà l’Autodeterminazione”
[103] “Rinnovu”
[104] “Rinnovu”
[105] “Rinnovu”
[106] “Rinnovu”
[107] “Rinnovu”
[108] “Partit Occitan”
[109] “Partit Occitan”
[110] “Partit Occitan”
[111] “Partit Occitan”
[112] “Partit Occitan”
[113] “Partit Occitan”
[114] “Corsica Libera”
[115] “Corsica Libera”
[116] “Corsica Libera”
[117] “Partidu di a Naziune Corsa”
[118] “Femu a Corsica”
[119] “Femu a Corsica”
[120] “Femu a Corsica”
[121] “Ligue Savosienne”
[122] “Ligue Savosienne”
[123] “Ligue Savosienne”
[124] “Mouvement Région Savoie”
[125] “Bayernpartei”
[126] “Bayernpartei”
[127] “Bayernpartei”
[128] “Bayernpartei”
[129] “Bayernpartei”
[130] “Bayernpartei”
[131] “Bayernpartei”
[132] “Bayernpartei”
[133] “Bayernpartei”
[134] “Bayernpartei”
[135] “Bayernpartei”
[136] “Bayernpartei”
[137] “Die Friesen”
[138] “Die Friesen”
[139] “Die Friesen”
[140] “Partei des Demokratischen Sozialismus”
[141] “Partei des Demokratischen Sozialismus”
[142] “Partei des Demokratischen Sozialismus”
[143] “Partei des Demokratischen Sozialismus”
[144] “Partei des Demokratischen Sozialismus”
[145] “Partei des Demokratischen Sozialismus”
[146] “Partei des Demokratischen Sozialismus”
[147] “Partei des Demokratischen Sozialismus”
[148] “Südschleswigschen Wählerverbandes”
[149] “Südschleswigschen Wählerverbandes”
[150] “Südschleswigschen Wählerverbandes”
[151] “Südschleswigschen Wählerverbandes”
[152] “Südschleswigschen Wählerverbandes”
[153] “Südschleswigschen Wählerverbandes”
[154] “Südschleswigschen Wählerverbandes”
[155] “Südschleswigschen Wählerverbandes”
[156] “Südschleswigschen Wählerverbandes”
[157] “Südschleswigschen Wählerverbandes”
[158] “Südschleswigschen Wählerverbandes”
[159] “Südschleswigschen Wählerverbandes”
[160] “Südschleswigschen Wählerverbandes”
[161] “Lega Nord”
[162] “Lega Nord”
[163] “Lega Nord”
[164] “Lega Nord”
[165] “Lega Nord”
[166] “Lega Nord”
[167] “Lega Nord”
[168] “Lega Nord”
[169] “Lega Nord”
[170] “Lega Nord”
[171] “Partito Popolare Trentino Tirolese/Unione Autonomista Trentino Tirolese/Autonomia Integrale / Partito Autonomista Trentino Tirolese” [172] “Partito Popolare Trentino Tirolese/Unione Autonomista Trentino Tirolese/Autonomia Integrale / Partito Autonomista Trentino Tirolese” [173] “Partito Popolare Trentino Tirolese/Unione Autonomista Trentino Tirolese/Autonomia Integrale / Partito Autonomista Trentino Tirolese” [174] “Partito Popolare Trentino Tirolese/Unione Autonomista Trentino Tirolese/Autonomia Integrale / Partito Autonomista Trentino Tirolese” [175] “Partito Popolare Trentino Tirolese/Unione Autonomista Trentino Tirolese/Autonomia Integrale / Partito Autonomista Trentino Tirolese” [176] “Partito Popolare Trentino Tirolese/Unione Autonomista Trentino Tirolese/Autonomia Integrale / Partito Autonomista Trentino Tirolese” [177] “Partito Popolare Trentino Tirolese/Unione Autonomista Trentino Tirolese/Autonomia Integrale / Partito Autonomista Trentino Tirolese” [178] “Partito Popolare Trentino Tirolese/Unione Autonomista Trentino Tirolese/Autonomia Integrale / Partito Autonomista Trentino Tirolese” [179] “Partito Popolare Trentino Tirolese/Unione Autonomista Trentino Tirolese/Autonomia Integrale / Partito Autonomista Trentino Tirolese” [180] “Partito Popolare Trentino Tirolese/Unione Autonomista Trentino Tirolese/Autonomia Integrale / Partito Autonomista Trentino Tirolese” [181] “Partito Sardo D’Azione”
[182] “Partito Sardo D’Azione”
[183] “Partito Sardo D’Azione”
[184] “Partito Sardo D’Azione”
[185] “Partito Sardo D’Azione”
[186] “Partito Sardo D’Azione”
[187] “Partito Sardo D’Azione”
[188] “Partito Sardo D’Azione”
[189] “Partito Sardo D’Azione”
[190] “Partito Sardo D’Azione”
[191] “Die Freiheitlichen”
[192] “Die Freiheitlichen”
[193] “Die Freiheitlichen”
[194] “Die Freiheitlichen”
[195] “Die Freiheitlichen”
[196] “Die Freiheitlichen”
[197] “Südtiroler Volkspartei”
[198] “Südtiroler Volkspartei”
[199] “Südtiroler Volkspartei”
[200] “Südtiroler Volkspartei”
[201] “Südtiroler Volkspartei”
[202] “Südtiroler Volkspartei”
[203] “Südtiroler Volkspartei”
[204] “Südtiroler Volkspartei”
[205] “Südtiroler Volkspartei”
[206] “Südtiroler Volkspartei”
[207] “Union für Südtirol”
[208] “Union für Südtirol”
[209] “Union für Südtirol”
[210] “Union für Südtirol”
[211] “Union für Südtirol”
[212] “Union für Südtirol”
[213] “Union Valdôtaine”
[214] “Union Valdôtaine”
[215] “Union Valdôtaine”
[216] “Union Valdôtaine”
[217] “Union Valdôtaine”
[218] “Union Valdôtaine”
[219] “Union Valdôtaine”
[220] “Union Valdôtaine”
[221] “Union Valdôtaine”
[222] “Union Valdôtaine”
[223] “Partido Andalucista”
[224] “Partido Andalucista”
[225] “Partido Andalucista”
[226] “Partido Andalucista”
[227] “Partido Andalucista”
[228] “Partido Andalucista”
[229] “Partido Andalucista”
[230] “Partido Andalucista”
[231] “Partido Andalucista”
[232] “Partido Andalucista”
[233] “Chunta Aragonesista”
[234] “Chunta Aragonesista”
[235] “Chunta Aragonesista”
[236] “Chunta Aragonesista”
[237] “Chunta Aragonesista”
[238] “Chunta Aragonesista”
[239] “Chunta Aragonesista”
[240] “Chunta Aragonesista”
[241] “Chunta Aragonesista”
[242] “Chunta Aragonesista”
[243] “Partido Aragonés”
[244] “Partido Aragonés”
[245] “Partido Aragonés”
[246] “Partido Aragonés”
[247] “Partido Aragonés”
[248] “Partido Aragonés”
[249] “Partido Aragonés”
[250] “Partido Aragonés”
[251] “Partido Aragonés”
[252] “Partido Aragonés”
[253] “Unió Mallorquina”
[254] “Unió Mallorquina”
[255] “Unió Mallorquina”
[256] “Unió Mallorquina”
[257] “Unió Mallorquina”
[258] “Unió Mallorquina”
[259] “Unió Mallorquina”
[260] “Unió Mallorquina”
[261] “Unió Mallorquina”
[262] “Esquerra Republicana de Catalunya”
[263] “Esquerra Republicana de Catalunya”
[264] “Esquerra Republicana de Catalunya”
[265] “Esquerra Republicana de Catalunya”
[266] “Esquerra Republicana de Catalunya”
[267] “Esquerra Republicana de Catalunya”
[268] “Esquerra Republicana de Catalunya”
[269] “Esquerra Republicana de Catalunya”
[270] “Esquerra Republicana de Catalunya”
[271] “Esquerra Republicana de Catalunya”
[272] “Esquerra Republicana de Catalunya”
[273] “Esquerra Republicana de Catalunya”
[274] “Alternativa Popular Canaria”
[275] “Alternativa Popular Canaria”
[276] “Coalición Canaria”
[277] “Coalición Canaria”
[278] “Coalición Canaria”
[279] “Coalición Canaria”
[280] “Coalición Canaria”
[281] “Coalición Canaria”
[282] “Coalición Canaria”
[283] “Coalición Canaria”
[284] “Partido Regionalista de Cantabria”
[285] “Partido Regionalista de Cantabria”
[286] “Partido Regionalista de Cantabria”
[287] “Partido Regionalista de Cantabria”
[288] “Partido Regionalista de Cantabria”
[289] “Partido Regionalista de Cantabria”
[290] “Partido Regionalista de Cantabria”
[291] “Partido Regionalista de Cantabria”
[292] “Partido Regionalista de Cantabria”
[293] “Partido Regionalista de Cantabria”
[294] “Convergéncia I Unió”
[295] “Convergéncia I Unió”
[296] “Convergéncia I Unió”
[297] “Convergéncia I Unió”
[298] “Convergéncia I Unió”
[299] “Convergéncia I Unió”
[300] “Convergéncia I Unió”
[301] “Convergéncia I Unió”
[302] “Convergéncia I Unió”
[303] “Convergéncia I Unió”
[304] “Convergéncia I Unió”
[305] “Convergéncia I Unió”
[306] “Bloque Nacionalista Gallego”
[307] “Bloque Nacionalista Gallego”
[308] “Bloque Nacionalista Gallego”
[309] “Bloque Nacionalista Gallego”
[310] “Bloque Nacionalista Gallego”
[311] “Bloque Nacionalista Gallego”
[312] “Bloque Nacionalista Gallego”
[313] “Bloque Nacionalista Gallego”
[314] “Bloque Nacionalista Gallego”
[315] “Bloque Nacionalista Gallego”
[316] “Anova-Irmandade Nacionalista”
[317] “Anova-Irmandade Nacionalista”
[318] “Compromiso por Galicia”
[319] “Compromiso por Galicia”
[320] “Partido Coalición Galega”
[321] “Partido Coalición Galega”
[322] “Partido Coalición Galega”
[323] “Partido Coalición Galega”
[324] “Partido Coalición Galega”
[325] “Partido Galeguista”
[326] “Partido Galeguista”
[327] “Partido Galeguista”
[328] “Partido Riojano”
[329] “Partido Riojano”
[330] “Partido Riojano”
[331] “Partido Riojano”
[332] “Partido Riojano”
[333] “Partido Riojano”
[334] “Partido Riojano”
[335] “Partido Riojano”
[336] “Partido Riojano”
[337] “Partido Riojano”
[338] “Convergencia Demócratica de Navarra”
[339] “Convergencia Demócratica de Navarra”
[340] “Convergencia Demócratica de Navarra”
[341] “Convergencia Demócratica de Navarra”
[342] “Convergencia Demócratica de Navarra”
[343] “Convergencia Demócratica de Navarra”
[344] “Aralar”
[345] “Aralar”
[346] “Aralar”
[347] “Aralar”
[348] “Aralar”
[349] “Eusko Alkartasuna”
[350] “Eusko Alkartasuna”
[351] “Eusko Alkartasuna”
[352] “Eusko Alkartasuna”
[353] “Eusko Alkartasuna”
[354] “Eusko Alkartasuna”
[355] “Eusko Alkartasuna”
[356] “Eusko Alkartasuna”
[357] “Eusko Alkartasuna”
[358] “Herri Batasuna”
[359] “Herri Batasuna”
[360] “Herri Batasuna”
[361] “Herri Batasuna”
[362] “Herri Batasuna”
[363] “Herri Batasuna”
[364] “Herri Batasuna”
[365] “Herri Batasuna”
[366] “Unión del Pueblo Navarra”
[367] “Unión del Pueblo Navarra”
[368] “Unión del Pueblo Navarra”
[369] “Unión del Pueblo Navarra”
[370] “Unión del Pueblo Navarra”
[371] “Unión del Pueblo Navarra”
[372] “Unión del Pueblo Navarra”
[373] “Unión del Pueblo Navarra”
[374] “Unión del Pueblo Navarra”
[375] “Unión del Pueblo Navarra”
[376] “Partido Nacionalista Vasco”
[377] “Partido Nacionalista Vasco”
[378] “Partido Nacionalista Vasco”
[379] “Partido Nacionalista Vasco”
[380] “Partido Nacionalista Vasco”
[381] “Partido Nacionalista Vasco”
[382] “Partido Nacionalista Vasco”
[383] “Partido Nacionalista Vasco”
[384] “Partido Nacionalista Vasco”
[385] “Partido Nacionalista Vasco”
[386] “Partido Nacionalista Vasco”
[387] “Alternativa Nacionalista Canaria”
[388] “Alternativa Nacionalista Canaria”
[389] “Alternativa Nacionalista Canaria”
[390] “Alternativa Nacionalista Canaria”
[391] “Euskal Herria Bildu”
[392] “Euskal Herria Bildu”
[393] “Candidatura d’Unitat Popular”
[394] “Candidatura d’Unitat Popular”
[395] “Candidatura d’Unitat Popular”
[396] “Bloc Nacionalista Valencià-Coalició Compromís”
[397] “Bloc Nacionalista Valencià-Coalició Compromís”
[398] “Bloc Nacionalista Valencià-Coalició Compromís”
[399] “Bloc Nacionalista Valencià-Coalició Compromís”
[400] “Bloc Nacionalista Valencià-Coalició Compromís”
[401] “Bloc Nacionalista Valencià-Coalició Compromís”
[402] “Bloc Nacionalista Valencià-Coalició Compromís”
[403] “Unió Valenciana”
[404] “Unió Valenciana”
[405] “Unió Valenciana”
[406] “Unió Valenciana”
[407] “Unió Valenciana”
[408] “Unió Valenciana”
[409] “Unió Valenciana”
[410] “Unió Valenciana”
[411] “Unió Valenciana”
[412] “Skånepartiet”
[413] “Skånepartiet”
[414] “Skånepartiet”
[415] “Skånepartiet”
[416] “Skånepartiet”
[417] “Scottish Greens”
[418] “Scottish Greens”
[419] “Scottish Greens”
[420] “Scottish Greens”
[421] “Scottish Greens”
[422] “Scottish National Party”
[423] “Scottish National Party”
[424] “Scottish National Party”
[425] “Scottish National Party”
[426] “Scottish National Party”
[427] “Scottish National Party”
[428] “Scottish National Party”
[429] “Scottish National Party”
[430] “Scottish National Party”
[431] “Scottish National Party”
[432] “Scottish National Party”
[433] “Scottish National Party”
[434] “Plaid Cymru”
[435] “Plaid Cymru”
[436] “Plaid Cymru”
[437] “Plaid Cymru”
[438] “Plaid Cymru”
[439] “Plaid Cymru”
[440] “Plaid Cymru”
[441] “Plaid Cymru”
[442] “Plaid Cymru”
[443] “Plaid Cymru”
[444] “Plaid Cymru”
[445] “Plaid Cymru”
[446] “The North East Party”
[447] “Democratic Unionist Party”
[448] “Democratic Unionist Party”
[449] “Democratic Unionist Party”
[450] “Democratic Unionist Party”
[451] “Democratic Unionist Party”
[452] “Democratic Unionist Party”
[453] “Democratic Unionist Party”
[454] “Democratic Unionist Party”
[455] “Democratic Unionist Party”
[456] “Democratic Unionist Party”
[457] “Democratic Unionist Party”
[458] “Democratic Unionist Party”
[459] “Democratic Unionist Party”
[460] “Democratic Unionist Party”
[461] “Social Democratic & Labour Party”
[462] “Social Democratic & Labour Party”
[463] “Social Democratic & Labour Party”
[464] “Social Democratic & Labour Party”
[465] “Social Democratic & Labour Party”
[466] “Social Democratic & Labour Party”
[467] “Social Democratic & Labour Party”
[468] “Social Democratic & Labour Party”
[469] “Social Democratic & Labour Party”
[470] “Social Democratic & Labour Party”
[471] “Social Democratic & Labour Party”
[472] “Social Democratic & Labour Party”
[473] “Social Democratic & Labour Party”
[474] “Social Democratic & Labour Party”
[475] “Sinn Fein”
[476] “Sinn Fein”
[477] “Sinn Fein”
[478] “Sinn Fein”
[479] “Sinn Fein”
[480] “Sinn Fein”
[481] “Sinn Fein”
[482] “Sinn Fein”
[483] “Sinn Fein”
[484] “Sinn Fein”
[485] “Mebyon Kernow”
[486] “Mebyon Kernow”
[487] “Mebyon Kernow”
[488] “Mebyon Kernow”
[489] “Mebyon Kernow”
[490] “Mebyon Kernow”
[491] “Mebyon Kernow”
[492] “Mebyon Kernow”
[493] “Mebyon Kernow”
[494] “Mebyon Kernow”
[495] “Yorkshire Party”
Es posible complementar el marco de datos con variables adicionales, por ejemplo, una que calcule la diferencia entre el año actual y el de las últimas elecciones regionales. Mutate() permite crear un nuevo vector llamado dif y asignarle los valores resultantes de la fórmula 2024 - election_year_regional (año actual - la variable sobre la que se opera). A continuación, se seleccionan y reordenan tres de las columnas con select(), incluyendo la de nueva creación, para visualizar la tabla:
euis |>
mutate(dif = 2024 - election_year_regional) |>
select(country_name, election_year_regional, dif)# A tibble: 495 × 3
country_name election_year_regional dif
<chr> <dbl> <dbl>
1 Belgium NA NA
2 Belgium NA NA
3 Belgium NA NA
4 Belgium NA NA
5 Belgium NA NA
6 Belgium NA NA
7 Belgium 1989 35
8 Belgium 1995 29
9 Belgium 1999 25
10 Belgium 2004 20
# ℹ 485 more rows
Filter() es una función que reduce el número de observaciones mostradas atendiendo a unos criterios especificados. Si para el caso únicamente interesan aquellas de Cataluña con elecciones posteriores a 2010, el primer paso sería comprobar qué nombre le asigna el marco a la región. De nuevo, conviene valerse de unique(), pero ahora enlazada a region_name:
region <- unique(euis$region_name)Como se aprecia en la posición 23 de la relación de regiones disponibles, Cataluña es codificada como Catalonia:
[1] “Bruxelles” “Communautaire francaise” [3] “Vlaams Gewest” “Deutsche Gemeinschaft”
[5] “Alsace” “Grand Est”
[7] “Bretagne” “Corse”
[9] “Occitaine” “Rhône-Alpes”
[11] “Bavaria” “Niedersachsen”
[13] “Ostdeutschland” “Schleswig-Holstein”
[15] “Padania” “Trento”
[17] “Sardegna” “Bozen-Südtirol”
[19] “Vallée d’Aoste” “Andalucia”
[21] “Aragon” “Islas Baleares”
[23] “Catalonia” “Canary Islands”
[25] “Cantabria” “Galicia”
[27] “La Rioja” “Navarra”
[29] “Pais Vasco /Euskadi” “Valencia”
[31] “Skåne” “Scotland”
[33] “Wales” “Northern Ireland”
[35] “South West” “Yorkshire and The Humber”
Conocido el dato, se fuerza el filtrado con la combinación region_name == Catalonia y election_year_regional > 2010 mediante el operador & (AND) para conseguir una tabla reducida de tan sólo 9 observaciones:
euis |>
filter(region_name == "Catalonia" & election_year_regional > 2010)# A tibble: 9 × 10
country_name region_name party_name party_abbreviation election_year_regional
<chr> <chr> <chr> <chr> <dbl>
1 Spain Catalonia Esquerra R… ERC 2012
2 Spain Catalonia Esquerra R… ERC 2015
3 Spain Catalonia Esquerra R… ERC 2017
4 Spain Catalonia Convergénc… CiU-PDeCAT 2012
5 Spain Catalonia Convergénc… CiU-PDeCAT 2015
6 Spain Catalonia Convergénc… CiU-PDeCAT 2017
7 Spain Catalonia Candidatur… CUP 2012
8 Spain Catalonia Candidatur… CUP 2015
9 Spain Catalonia Candidatur… CUP 2017
# ℹ 5 more variables: elec_date_reg <chr>,
# election_year_national_previous <dbl>, elec_date_nat <chr>, eu <dbl>,
# dum_eu <dbl>
Finalizando el análisis del marco de datos, se decide agrupar las fechas correspondientes a la variable election_year_national_previous en décadas, por tanto, es necesario conocer el valor máximo y mínimo que comprende el vector, una información proporcionada por min() y max(). Sin embargo, es más eficiente aprovechar la función summary() ya ejecutada en un apartado anterior y rescatar el intervalo de años, que abarca 1969:2019.
Después, se crea la variable decade y los parámetros de agregación con case_when(), indicando que todos los años pertenecientes a una década se recojan en un mismo conjunto (de ‘1960s’ a ‘2010s’). Seguidamente, con select() se prepara una previsualización reducida del resultado:
euis$decade <- case_when(euis$election_year_national_previous < 1970 ~ "1960s",
euis$election_year_national_previous < 1980 ~ "1970s",
euis$election_year_national_previous < 1990 ~ "1980s",
euis$election_year_national_previous < 2000 ~ "1990s",
euis$election_year_national_previous < 2010 ~ "2000s",
euis$election_year_national_previous < 2020 ~ "2010s")
euis |>
select(country_name, election_year_national_previous, decade)# A tibble: 495 × 3
country_name election_year_national_previous decade
<chr> <dbl> <chr>
1 Belgium 1971 1970s
2 Belgium 1974 1970s
3 Belgium 1977 1970s
4 Belgium 1978 1970s
5 Belgium 1981 1980s
6 Belgium 1985 1980s
7 Belgium 1987 1980s
8 Belgium 1991 1990s
9 Belgium 1995 1990s
10 Belgium 2003 2000s
# ℹ 485 more rows
Se carga la base de datos ‘The War of the Five Kings’ (Albon 2024), interactuando con ella para conocer más sobre la historia de ‘Game of Thrones’:
got <- tibble(read.csv("https://github.com/chrisalbon/war_of_the_five_kings_dataset/raw/master/5kings_battles_v1.csv"))Debido a que no se va a trabajar con todas las variables, primero se explora el contenido del marco de manera general con glimpse():
glimpse(got)Rows: 38
Columns: 25
$ name <chr> "Battle of the Golden Tooth", "Battle at the Mummer…
$ year <int> 298, 298, 298, 298, 298, 298, 298, 299, 299, 299, 2…
$ battle_number <int> 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, …
$ attacker_king <chr> "Joffrey/Tommen Baratheon", "Joffrey/Tommen Barathe…
$ defender_king <chr> "Robb Stark", "Robb Stark", "Robb Stark", "Joffrey/…
$ attacker_1 <chr> "Lannister", "Lannister", "Lannister", "Stark", "St…
$ attacker_2 <chr> "", "", "", "", "Tully", "Tully", "", "", "", "", "…
$ attacker_3 <chr> "", "", "", "", "", "", "", "", "", "", "", "", "",…
$ attacker_4 <chr> "", "", "", "", "", "", "", "", "", "", "", "", "",…
$ defender_1 <chr> "Tully", "Baratheon", "Tully", "Lannister", "Lannis…
$ defender_2 <chr> "", "", "", "", "", "", "", "", "", "", "", "", "",…
$ defender_3 <lgl> NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA,…
$ defender_4 <lgl> NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA,…
$ attacker_outcome <chr> "win", "win", "win", "loss", "win", "win", "win", "…
$ battle_type <chr> "pitched battle", "ambush", "pitched battle", "pitc…
$ major_death <int> 1, 1, 0, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 0, …
$ major_capture <int> 0, 0, 1, 1, 1, 0, 0, 0, 0, 0, 0, 1, 1, 0, 1, 0, 0, …
$ attacker_size <int> 15000, NA, 15000, 18000, 1875, 6000, NA, NA, 1000, …
$ defender_size <int> 4000, 120, 10000, 20000, 6000, 12625, NA, NA, NA, N…
$ attacker_commander <chr> "Jaime Lannister", "Gregor Clegane", "Jaime Lannist…
$ defender_commander <chr> "Clement Piper, Vance", "Beric Dondarrion", "Edmure…
$ summer <int> 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, …
$ location <chr> "Golden Tooth", "Mummer's Ford", "Riverrun", "Green…
$ region <chr> "The Westerlands", "The Riverlands", "The Riverland…
$ note <chr> "", "", "", "", "", "", "", "", "", "Greyjoy's troo…
Posteriormente, se seleccionan las columnas deseadas con select() y el resultado se codifica en un nuevo objeto reducido, con 38 observaciones y 11 variables, llamado gotr:
gotr <- got |>
select(name, year, attacker_king, defender_king, attacker_size, defender_size,
attacker_outcome, battle_type, location, region, summer)
gotr# A tibble: 38 × 11
name year attacker_king defender_king attacker_size defender_size
<chr> <int> <chr> <chr> <int> <int>
1 Battle of the … 298 Joffrey/Tomm… Robb Stark 15000 4000
2 Battle at the … 298 Joffrey/Tomm… Robb Stark NA 120
3 Battle of Rive… 298 Joffrey/Tomm… Robb Stark 15000 10000
4 Battle of the … 298 Robb Stark Joffrey/Tomm… 18000 20000
5 Battle of the … 298 Robb Stark Joffrey/Tomm… 1875 6000
6 Battle of the … 298 Robb Stark Joffrey/Tomm… 6000 12625
7 Sack of Darry 298 Joffrey/Tomm… Robb Stark NA NA
8 Battle of Moat… 299 Balon/Euron … Robb Stark NA NA
9 Battle of Deep… 299 Balon/Euron … Robb Stark 1000 NA
10 Battle of the … 299 Balon/Euron … Robb Stark 264 NA
# ℹ 28 more rows
# ℹ 5 more variables: attacker_outcome <chr>, battle_type <chr>,
# location <chr>, region <chr>, summer <int>
Se sigue reduciendo el número de observaciones con la función filter() sobre attacker_king para limitar las filas a un total de 5, aquellas en las que el rey atacante es ‘Stannis Baratheon’:
gotr |>
filter(attacker_king == "Stannis Baratheon")# A tibble: 5 × 11
name year attacker_king defender_king attacker_size defender_size
<chr> <int> <chr> <chr> <int> <int>
1 Siege of Storm'… 299 Stannis Bara… Renly Barath… 5000 20000
2 Battle of the B… 299 Stannis Bara… Joffrey/Tomm… 21000 7250
3 Battle of Castl… 300 Stannis Bara… Mance Rayder 100000 1240
4 Retaking of Dee… 300 Stannis Bara… Balon/Euron … 4500 200
5 Siege of Winter… 300 Stannis Bara… Joffrey/Tomm… 5000 8000
# ℹ 5 more variables: attacker_outcome <chr>, battle_type <chr>,
# location <chr>, region <chr>, summer <int>
Profundizando en un segundo nivel de filtrado, se añade la condición de que la batalla debe desarrollarse en invierno, para lo que hay que aplicar el operador de desigualdad != sobre la variable binaria summer, que únicamente codifica como 0 (no verano) o 1 (verano), dando lugar a 3 observaciones que cumplen los requisitos:
gotr |>
filter(attacker_king == "Stannis Baratheon" & summer != 1)# A tibble: 3 × 11
name year attacker_king defender_king attacker_size defender_size
<chr> <int> <chr> <chr> <int> <int>
1 Battle of Castl… 300 Stannis Bara… Mance Rayder 100000 1240
2 Retaking of Dee… 300 Stannis Bara… Balon/Euron … 4500 200
3 Siege of Winter… 300 Stannis Bara… Joffrey/Tomm… 5000 8000
# ℹ 5 more variables: attacker_outcome <chr>, battle_type <chr>,
# location <chr>, region <chr>, summer <int>
Considerando adecuado el marco actual, se procede a cambiar el formato de attacker_size y defender_size a miles (dividiendo ambas variables entre 1000) con ayuda de la función mutate(). Adicionalmente, pueden incluso renombrarse las columnas mediante rename() para resaltar el cambio:
gotr |>
filter(attacker_king == "Stannis Baratheon" & summer != 1) |>
mutate(attacker_size = attacker_size / 1000, defender_size = defender_size / 1000) |>
rename(attacker_size_k = attacker_size, defender_size_k = defender_size)# A tibble: 3 × 11
name year attacker_king defender_king attacker_size_k defender_size_k
<chr> <int> <chr> <chr> <dbl> <dbl>
1 Battle of C… 300 Stannis Bara… Mance Rayder 100 1.24
2 Retaking of… 300 Stannis Bara… Balon/Euron … 4.5 0.2
3 Siege of Wi… 300 Stannis Bara… Joffrey/Tomm… 5 8
# ℹ 5 more variables: attacker_outcome <chr>, battle_type <chr>,
# location <chr>, region <chr>, summer <int>
Otra opción es reordenar las observaciones con un criterio diferente, por ejemplo, según su defender_size_k de manera descendente, siendo necesaria la función arrange(desc):
gotr |>
filter(attacker_king == "Stannis Baratheon" & summer != 1) |>
mutate(attacker_size = attacker_size / 1000, defender_size = defender_size / 1000) |>
rename(attacker_size_k = attacker_size, defender_size_k = defender_size) |>
arrange(desc(defender_size_k))# A tibble: 3 × 11
name year attacker_king defender_king attacker_size_k defender_size_k
<chr> <int> <chr> <chr> <dbl> <dbl>
1 Siege of Wi… 300 Stannis Bara… Joffrey/Tomm… 5 8
2 Battle of C… 300 Stannis Bara… Mance Rayder 100 1.24
3 Retaking of… 300 Stannis Bara… Balon/Euron … 4.5 0.2
# ℹ 5 more variables: attacker_outcome <chr>, battle_type <chr>,
# location <chr>, region <chr>, summer <int>
Y para terminar, se muestra la capacidad de R para proporcionar respuestas a preguntas realizadas sobre el objeto de estudio del marco de datos con el que se trabaja. A un observador interesado en conocer los ejércitos defensores más numerosos en las emboscadas de Game of Thrones, se le podría facilitar la siguiente tabla:
gotr |>
filter(battle_type == "ambush") |>
select(name, location, year, battle_type, defender_size) |>
arrange(desc(defender_size))# A tibble: 10 × 5
name location year battle_type defender_size
<chr> <chr> <int> <chr> <int>
1 Battle of the Camps Riverrun 298 ambush 12625
2 Battle of Oxcross Oxcross 299 ambush 10000
3 Battle of the Whispering Wood Whispering Wood 298 ambush 6000
4 The Red Wedding The Twins 299 ambush 3500
5 Sack of Winterfell Winterfell 299 ambush 2000
6 Battle at the Mummer's Ford Mummer's Ford 298 ambush 120
7 Sack of Harrenhal Harrenhal 299 ambush 100
8 Battle of the Stony Shore Stony Shore 299 ambush NA
9 Battle of Winterfell Winterfell 299 ambush NA
10 Battle of the Crag Crag 299 ambush NA