# pon eval = T para visualizar la imagen
# asegúrate de que la imagen y este documento están en la misma carpeta
knitr::include_graphics("aadd_unit2.png")Reto 2: Análisis de Datos
Actividad 1
Si pones el siguiente chunk en eval = T y te aseguras de que el archivo aadd_unit2.png se encuentra en tu directorio de trabajo, verás el marco de datos COW Trade 4.0. Observa los datos de la imagen y consulta, si lo crees necesario, la página web para responder a las siguientes preguntas:
El conjunto de datos contiene 1,773,656 observaciones y 10 variables.
La unidad de observación es el flujo de comercio bilateral entre pares de estados soberanos para un año específico.
Las variables que tiene este conjunto de datos son:
- Códigos de país (ccode1, ccode2): variables numéricas que identifican a los países en el sistema del proyecto Correlates of War.
- Año (year): variable temporal que indica el año del flujo de comercio.
- Nombres de los países (importer1, importer2): Variables Categóricas que indican los países involucrados en el comercio bilateral.
- Variables cuantitativas de comercio, como flow1, flow2, smoothflow1, smoothflow2, y smoothtotrade, que representan las cifras de importaciones y exportaciones entre los países, en dólares estadounidenses corrientes.
El nivel de análisis es el nivel de país-par en este caso Canada y Estados Unidos en un año específico en este caso para los años entre 1920 y 1929, ya que se están analizando las relaciones comerciales entre pares de países por año.
Una pregunta posible podría ser: ¿Cómo ha evolucionado el comercio bilateral entre Estados Unidos y Canadá desde 1920 hasta 1929?
En la tabla vemos un aumento en el total del comercio (columna smoothtotrade) entre Canadá y Estados Unidos durante la década de 1920. Podríamos cometer una falacia ecológica si asumiésemos que ese aumento benefició a todos los sectores económicos de ambos países ya que ese aumento podría estar concentrado en sectores específicos.
Actividad 2
En esta actividad utilizaremos el marco de datos eu_ideology_scores.xlsx. Para ello lo importaremos con la función readxl() y le daremos el nombre de euis.
#Recuerda que todos los chunks están en eval = F, para activarlos tienes que cambiar a eval = T
library(readxl)
euis <- read_xlsx("eu_ideology_scores.xlsx")- En primer lugar, haz una exploración general de los datos con las funciones que ya conoces, identificando el número de observaciones, variables, unidad de observación, etc.
En este marco de datos vemos que tenemos 10 variables y 495 observaciones.
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,…
- Con
unique(), examina cuántos países diferentes hay.
unique_countries <- unique(euis$country_name)
length(unique_countries)[1] 7
unique(euis$country_name)[1] "Belgium" "France" "Germany" "Italy"
[5] "Spain" "Sweden" "United Kingdom"
- Escribe el código que te permita observar qué observación / observaciones es “Euskal Herria Bildu”.
euis %>% filter(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>
- Cambia “Social Democratic and Labour Party” por “Social Democratic & Labour Party”.
euis %>% mutate(party_name = ifelse(party_name == "Social Democratic and Labour Party",
"Social Democratic & Labour Party", party_name))# A tibble: 495 × 10
country_name region_name party_name party_abbreviation election_year_regional
<chr> <chr> <chr> <chr> <dbl>
1 Belgium Bruxelles Front Dém… FDF/DéFI NA
2 Belgium Bruxelles Front Dém… FDF/DéFI NA
3 Belgium Bruxelles Front Dém… FDF/DéFI NA
4 Belgium Bruxelles Front Dém… FDF/DéFI NA
5 Belgium Bruxelles Front Dém… FDF/DéFI NA
6 Belgium Bruxelles Front Dém… FDF/DéFI NA
7 Belgium Bruxelles Front Dém… FDF/DéFI 1989
8 Belgium Bruxelles Front Dém… FDF/DéFI 1995
9 Belgium Bruxelles Front Dém… FDF/DéFI 1999
10 Belgium Bruxelles Front Dém… FDF/DéFI 2004
# ℹ 485 more rows
# ℹ 5 more variables: elec_date_reg <chr>,
# election_year_national_previous <dbl>, elec_date_nat <chr>, eu <dbl>,
# dum_eu <dbl>
unique(euis$party_name) [1] "Front Démocratique des Francophones"
[2] "Rassemblement Wallonie/Rassemblement Wallonie France"
[3] "Nieuw Vlaamse Alliantie"
[4] "Vlaams Belang"
[5] "Volksunie"
[6] "Pro Duetschsprachige Gemeinschaft"
[7] "Wallonie D'Abord"
[8] "Alsace d'Abord"
[9] "Union Democratique Bretonne"
[10] "Parti Breton / Strollad Breizh"
[11] "A Manca"
[12] "Accolta Naziunale Corsa"
[13] "A Manca Naziunale"
[14] "Corsica Nazione"
[15] "Unione di u populu Cosru"
[16] "Muvimentu pà l'Autodeterminazione"
[17] "Rinnovu"
[18] "Partit Occitan"
[19] "Corsica Libera"
[20] "Partidu di a Naziune Corsa"
[21] "Femu a Corsica"
[22] "Ligue Savosienne"
[23] "Mouvement Région Savoie"
[24] "Bayernpartei"
[25] "Die Friesen"
[26] "Partei des Demokratischen Sozialismus"
[27] "Südschleswigschen Wählerverbandes"
[28] "Lega Nord"
[29] "Partito Popolare Trentino Tirolese/Unione Autonomista Trentino Tirolese/Autonomia Integrale / Partito Autonomista Trentino Tirolese"
[30] "Partito Sardo D'Azione"
[31] "Die Freiheitlichen"
[32] "Südtiroler Volkspartei"
[33] "Union für Südtirol"
[34] "Union Valdôtaine"
[35] "Partido Andalucista"
[36] "Chunta Aragonesista"
[37] "Partido Aragonés"
[38] "Unió Mallorquina"
[39] "Esquerra Republicana de Catalunya"
[40] "Alternativa Popular Canaria"
[41] "Coalición Canaria"
[42] "Partido Regionalista de Cantabria"
[43] "Convergéncia I Unió"
[44] "Bloque Nacionalista Gallego"
[45] "Anova-Irmandade Nacionalista"
[46] "Compromiso por Galicia"
[47] "Partido Coalición Galega"
[48] "Partido Galeguista"
[49] "Partido Riojano"
[50] "Convergencia Demócratica de Navarra"
[51] "Aralar"
[52] "Eusko Alkartasuna"
[53] "Herri Batasuna"
[54] "Unión del Pueblo Navarra"
[55] "Partido Nacionalista Vasco"
[56] "Alternativa Nacionalista Canaria"
[57] "Euskal Herria Bildu"
[58] "Candidatura d'Unitat Popular"
[59] "Bloc Nacionalista Valencià-Coalició Compromís"
[60] "Unió Valenciana"
[61] "Skånepartiet"
[62] "Scottish Greens"
[63] "Scottish National Party"
[64] "Plaid Cymru"
[65] "The North East Party"
[66] "Democratic Unionist Party"
[67] "Social Democratic and Labour Party"
[68] "Sinn Fein"
[69] "Mebyon Kernow"
[70] "Yorkshire Party"
- La variable
election_year_regionalcomputa el año en que se produjeron elecciones regionales. No obstante, lo que queremos crear es una nueva variable que se llamedify que calcule la diferencia de años con el actualizado, de manera que si unas elecciones se produjeron en 1995 y estamos en 2024, el resultado sea 29 (2024 - 1995).
euis1 <- euis %>%
mutate(dif = 2024 - election_year_regional) %>%
select(election_year_regional, dif) %>%
glimpse()Rows: 495
Columns: 2
$ election_year_regional <dbl> NA, NA, NA, NA, NA, NA, 1989, 1995, 1999, 2004,…
$ dif <dbl> NA, NA, NA, NA, NA, NA, 35, 29, 25, 20, 15, 10,…
- Reduce los datos, de manera que conserves las observaciones de Cataluña que tuvieron elecciones regionales más tarde de 2010.
catalonia_data <- euis %>%
filter(region_name == "Catalonia", election_year_regional > 2010)
catalonia_data# 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>
- Finalmente, crea una nueva variable
decadea partir de los valores de la variableelection_year_national_previous, de manera que observes sus valores por décadas. Es decir, en lugar de 1971 debería verse el valor “1970s”, en lugar de 1981 el valor “1980s”, etc.
decada <- euis %>%
mutate(decade = paste0(floor(election_year_national_previous / 10) * 10, "s")) %>%
glimpse()Rows: 495
Columns: 11
$ 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,…
$ decade <chr> "1970s", "1970s", "1970s", "1970s", "1…
Actividad 3: The War Of The Five Kings
En esta sección utilizaremos el sistema pipe (%>% o |>) y las funciones del paquete dplyr (filter, select, mutate, arrange). Y lo aplicaremos a la base de datos The War Of The Five Kings, inspirada en la popular serie Game of Thrones.
got <- tibble(read.csv("https://github.com/chrisalbon/war_of_the_five_kings_dataset/raw/master/5kings_battles_v1.csv"))- En primer lugar, vamos a reducir los datos, de manera que solo conservemos los datos que nos interesan. Primero deberás visualizar los datos para hacerte una idea de su contenido (recomendamos con
glimpse()). A continuación, crea un nuevo objetogotrdonde conservemos las siguientes columnas: el nombre de la batalla, el año, el rey atacante y defensor, el tamaño del atacante y el defensor, el resultado y el tipo de la batalla, la localización, la región y si era verano.
gotr <- got %>%
select(name, year, attacker_king, defender_king, attacker_size, defender_size,
attacker_outcome, battle_type, location, region, summer)
glimpse(gotr)Rows: 38
Columns: 11
$ name <chr> "Battle of the Golden Tooth", "Battle at the Mummer's…
$ year <int> 298, 298, 298, 298, 298, 298, 298, 299, 299, 299, 299…
$ attacker_king <chr> "Joffrey/Tommen Baratheon", "Joffrey/Tommen Baratheon…
$ defender_king <chr> "Robb Stark", "Robb Stark", "Robb Stark", "Joffrey/To…
$ attacker_size <int> 15000, NA, 15000, 18000, 1875, 6000, NA, NA, 1000, 26…
$ defender_size <int> 4000, 120, 10000, 20000, 6000, 12625, NA, NA, NA, NA,…
$ attacker_outcome <chr> "win", "win", "win", "loss", "win", "win", "win", "wi…
$ battle_type <chr> "pitched battle", "ambush", "pitched battle", "pitche…
$ location <chr> "Golden Tooth", "Mummer's Ford", "Riverrun", "Green F…
$ region <chr> "The Westerlands", "The Riverlands", "The Riverlands"…
$ summer <int> 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,…
- Filtra los datos de
gotrpara que se vean solo las batallas donde Stannis Baratheon era el rey atacante.
stannis_battles <- gotr %>%
filter(attacker_king == "Stannis Baratheon")
stannis_battles# 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>
- Filtra los datos para que se vean solo las batallas donde Stannis Baratheon era el rey atacante y la batalla fue en invierno.
stannis_winter_battles <- gotr %>%
filter(attacker_king == "Stannis Baratheon", summer == FALSE)
stannis_winter_battles# 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>
- Copia el código anterior y crea una nueva pipe, donde pongas los datos de tamaño del atacante y tamaño del defensor en miles.
stannis_winter_battles_mil <- gotr %>%
filter(attacker_king == "Stannis Baratheon", summer == FALSE) %>%
mutate(attacker_size = attacker_size / 1000,
defender_size = defender_size / 1000)
stannis_winter_battles_mil# A tibble: 3 × 11
name year attacker_king defender_king attacker_size defender_size
<chr> <int> <chr> <chr> <dbl> <dbl>
1 Battle of Castl… 300 Stannis Bara… Mance Rayder 100 1.24
2 Retaking of Dee… 300 Stannis Bara… Balon/Euron … 4.5 0.2
3 Siege of Winter… 300 Stannis Bara… Joffrey/Tomm… 5 8
# ℹ 5 more variables: attacker_outcome <chr>, battle_type <chr>,
# location <chr>, region <chr>, summer <int>
- Copia el código anterior y crea una nueva pipe, donde ordenes los datos por tamaño del ejército defensor.
stannis_winter_battles_orden <- gotr %>%
filter(attacker_king == "Stannis Baratheon", summer == FALSE) %>%
arrange(defender_size)
stannis_winter_battles_orden# A tibble: 3 × 11
name year attacker_king defender_king attacker_size defender_size
<chr> <int> <chr> <chr> <int> <int>
1 Retaking of Dee… 300 Stannis Bara… Balon/Euron … 4500 200
2 Battle of Castl… 300 Stannis Bara… Mance Rayder 100000 1240
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>
- Entre las batallas que eran una emboscada, ¿cuáles eran los ejércitos defensores con más tropas? Responde a la pregunta utilizando, en este orden,
filter(),select()yarrange(). El marco de datos resultante debería mostrar claramente la respuesta.
ambushes <- gotr %>%
filter(battle_type == "ambush") %>%
select(defender_king,defender_size) %>%
arrange(desc(defender_size))
ambushes# A tibble: 10 × 2
defender_king defender_size
<chr> <int>
1 Joffrey/Tommen Baratheon 12625
2 Joffrey/Tommen Baratheon 10000
3 Joffrey/Tommen Baratheon 6000
4 Robb Stark 3500
5 Robb Stark 2000
6 Robb Stark 120
7 Joffrey/Tommen Baratheon 100
8 Robb Stark NA
9 Robb Stark NA
10 Joffrey/Tommen Baratheon NA