logo
20619_R2_Actividad 2.2: Ejercicios con R

Autor

Marc Alfonso Broseta

Fecha

5 de noviembre de 2024

Actividad 1.

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:

Mostrar código.
knitr::include_graphics("aadd_unit2.png")

  1. 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.

  2. 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).

  3. 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.
  4. 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.

  5. 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?

  6. 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.

Actividad 2.

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:

Mostrar código.
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:

Mostrar código.
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:

Mostrar código.
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:

Mostrar código.
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:

Mostrar código.
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 ==:

Mostrar código.
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:

Mostrar código.
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.

Mostrar listado.

[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:

Mostrar código.
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:

Mostrar código.
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:

Mostrar regiones.

[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:

Mostrar código.
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:

Mostrar código.
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

Actividad 3: The War of the Five Kings.

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’:

Mostrar código.
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():

Mostrar código.
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:

Mostrar código.
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’:

Mostrar código.
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:

Mostrar código.
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:

Mostrar código.
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):

Mostrar código.
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:

Mostrar código.
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

Bibliografía y webgrafía.

Albon, C. 2024. The War of the Five Kings, a dataset. GitHub. https://github.com/chrisalbon/war_of_the_five_kings_dataset.
Barbieri, K., y O. Keshk. 2016. International Trade, 1870-2014 (v4.0). Correlates of War. https://correlatesofwar.org/data-sets/bilateral-trade.
Mas, J., y P. Vall-Prat. 2024. R en Ciencias Sociales II. FUOC. https://jmas.quarto.pub/r-en-ciencias-sociales-ii.