A continuación, realizaremos un análisis de la edad de los/as ganadores de los premios Nobel a lo largo de los años. Para ello, primero calcularemos la edad que tenía cada galardonado/a cuando fue premiado/a.
library(tidyverse)
## -- Attaching packages --------------------------------------- tidyverse 1.3.1 --
## v ggplot2 3.3.3 v purrr 0.3.4
## v tibble 3.1.0 v dplyr 1.0.5
## v tidyr 1.1.3 v stringr 1.4.0
## v readr 1.4.0 v forcats 0.5.1
## -- Conflicts ------------------------------------------ tidyverse_conflicts() --
## x dplyr::filter() masks stats::filter()
## x dplyr::lag() masks stats::lag()
ganadores <- read.csv("Ganadores Nobel.csv", stringsAsFactors = TRUE)
ganadores <- ganadores %>%
transform(Año = as.numeric(Año), yearNacimiento = as.numeric(yearNacimiento))%>%
mutate(edad = Año - yearNacimiento)
ggplot(ganadores)+
geom_histogram(aes(x = edad), fill = "blue", color = "white")+
labs(title = "Edad de los/as ganadores de Premios Nobel",
x = "Edad",
y = "Cantidad",
caption = "Fuente: Producción propia a partir de Wikipedia")
## `stat_bin()` using `bins = 30`. Pick better value with `binwidth`.
## Warning: Removed 31 rows containing non-finite values (stat_bin).
Como podemos ver la mayoría de los/as ganadores tenían entre 40 y 75 años de edad cuando recibieron el premio, se podría decir que fueron premiados en la madurez de su carrera. Igualmente ahora podemos preguntarnos qué sucede con la edad de los premiados a lo largo de los años.
ggplot(ganadores)+
geom_point(aes(x = Año, y = edad, color = Disciplina))+
labs(title = "Edad de los/as ganadores de Premios Nobel a lo largo de los años",
x = "Año",
y = "Edad",
caption = "Fuente: Producción propia a partir de Wikipedia")+
theme_minimal()
## Warning: Removed 31 rows containing missing values (geom_point).
A través del gráfico de puntos vemos que la tendencia de etaria se mantiene a lo largo de lo años. Sin embargo, vemos como luego del año 2000 comienzan a aparecer puntos por debajo y por arriba de la nube, es decir, que gente más jóven comienza a recibir el premio y más vieja también. Al agregar la variable “Disciplina” nos llama la atención el comportamiento de la categoría “Paz” en relación a la edad y los años, al principio se entregaba a gente más adulta (aproximadamente mayores a 40 años) pero a medidados de la década del 60 se obsera la aparición de ganadores más jóvenes, incluso luego del 2000 aparecen valores cercanos o menores a 25 años. Esto puede deverse a la revalorización de los jóvenes como actores sociales y políticos. Por otro lado, se observa que los galardonados más viejos se otorgaron luego del 2000 para las disciplinas de “Física” y “Química”.
Ahora veamos qué sucede si calculamos la edad promedio.
ggplot(ganadores %>%
group_by(Año) %>%
summarise(edad_prom = mean(edad)))+
geom_point(aes(x = Año, y = edad_prom))+
labs(title = "Edad promedio de los/as ganadores de Premios Nobel a lo largo de los años",
x = "Año",
y = "Edad",
caption = "Fuente: Producción propia a partir de Wikipedia")+
theme_minimal()
## Warning: Removed 29 rows containing missing values (geom_point).
A partir de este último gráfico se puede observar la tendencia en el aumento de la edad de los/as galardonados/as a lo largo de los años. Esto puede deberse al aumento de la esperanza de vida a nivel mundial.
Por último, me gustaría retomar la variación de las edades observada a lo largo de los años para las diferentes disciplinas. Para ello, analizaremos la edad promedio de los/as premiados/as en cada una de las disciplinas a lo largo de los años. Tomamos la edad promedio ya que no siempre se entrega el premio a una sola persona en cada disciplina.
ggplot(ganadores %>%
group_by(Año, Disciplina) %>%
summarise(edad_prom = mean(edad)))+
geom_point(aes(x = Año, y = edad_prom, color=Disciplina))+
labs(title = "Edad promedio por disciplina de los/as ganadores de Premios Nobel a lo largo
de los años",
x = "Año",
y = "Edad",
caption = "Fuente: Producción propia a partir de Wikipedia")+
facet_wrap(~Disciplina)+
theme_minimal()+
theme(axis.text.x = element_text(size = 6, angle = 90))
## `summarise()` has grouped output by 'Año'. You can override using the `.groups` argument.
## Warning: Removed 29 rows containing missing values (geom_point).
A través del gráfico observamos que la variación de las edades se comporta diferente en cada una de las disciplinas. Podemos encontrar cierta similitud entre Física, Fisiología/Medicina y Química, esto se podría deber a que a más años de investigación se obtienen resultados mucho más innovadores y profundos. En cuanto a Literatura y Económicas se observa que las nubes de puntos son más compactas. Por último, la disciplina Paz es la que rompe los equemas y a lo largo de los años se nota una apertura hacia los más jóvenes.
¿Cuáles serán las nacionalidades más premiadas?
Nuestro data set contiene la nacionalidad de los/as ganadores a lo largo de los años. Sin embargo, esta columna, necesita algunos retoques para que podamos trabajar con ella y hacer algún tipo de análisis. Para ello, crearemos un nuevo objeto (data frame) “nacionalidades”, en el cual haremos todos los cambios.
nacionalidades <- ganadores %>%
transform(Nacionalidad = as.factor(Nacionalidad))%>%
group_by(Nacionalidad, Año, Disciplina, Ganador, genero)%>%
summarise(cantidad=n())
nacionalidades$Nacionalidad <- tolower(nacionalidades$Nacionalidad)
nacionalidades$Nacionalidad <- gsub("\\(.+\\)","", nacionalidades$Nacionalidad)
nacionalidades$Nacionalidad <- gsub("estados unidos", "estadounidense",
nacionalidades$Nacionalidad)
nacionalidades$Nacionalidad <- gsub("reino unido", "britanico", nacionalidades$Nacionalidad)
nacionalidades <- nacionalidades %>%
filter(!is.na(Nacionalidad)) %>%
separate(Nacionalidad,sep = " y ",into=c("Nacionalidad1","Nacionalidad2"))%>%
pivot_longer(cols = c("Nacionalidad1", "Nacionalidad2"), names_to = "NroNacionalidad",
values_to = "Nacionalidad") %>%
filter(!is.na(Nacionalidad)) %>%
select(-NroNacionalidad) %>%
separate(Nacionalidad,sep = ",",into=c("Nacionalidad1","Nacionalidad2", "Nacionalidad3"))%>%
pivot_longer(cols = c("Nacionalidad1", "Nacionalidad2", "Nacionalidad3"),
names_to = "NroNacionalidad", values_to = "Nacionalidad") %>%
filter(!is.na(Nacionalidad)) %>%
select(-NroNacionalidad) %>%
separate(Nacionalidad,sep = " - ",into=c("Nacionalidad1","Nacionalidad2", "Nacionalidad3"))%>%
pivot_longer(cols = c("Nacionalidad1", "Nacionalidad2", "Nacionalidad3"),
names_to = "NroNacionalidad", values_to = "Nacionalidad") %>%
filter(!is.na(Nacionalidad)) %>%
select(-NroNacionalidad) %>%
separate(Nacionalidad,sep = " e ",into=c("Nacionalidad1","Nacionalidad2"))%>%
pivot_longer(cols = c("Nacionalidad1", "Nacionalidad2"), names_to = "NroNacionalidad",
values_to = "Nacionalidad") %>%
filter(!is.na(Nacionalidad)) %>%
select(-NroNacionalidad)%>%
separate(Nacionalidad,sep = "-",into=c("Nacionalidad1","Nacionalidad2"))%>%
pivot_longer(cols = c("Nacionalidad1", "Nacionalidad2"), names_to = "NroNacionalidad",
values_to = "Nacionalidad") %>%
filter(!is.na(Nacionalidad)) %>%
select(-NroNacionalidad)%>%
separate(Nacionalidad,sep = "/",into=c("Nacionalidad1","Nacionalidad2"))%>%
pivot_longer(cols = c("Nacionalidad1", "Nacionalidad2"), names_to = "NroNacionalidad",
values_to = "Nacionalidad") %>%
filter(!is.na(Nacionalidad)) %>%
select(-NroNacionalidad)%>%
separate(Nacionalidad,sep = " ",into=c("Nacionalidad1","Nacionalidad2"))%>%
pivot_longer(cols = c("Nacionalidad1", "Nacionalidad2"), names_to = "NroNacionalidad",
values_to = "Nacionalidad") %>%
filter(!is.na(Nacionalidad)) %>%
select(-NroNacionalidad)%>%
filter(Nacionalidad != ".") %>%
filter(Nacionalidad != "")%>%
arrange(Nacionalidad)
nacionalidades$Nacionalidad <- str_trim(nacionalidades$Nacionalidad, side = "both")
nacionalidades$Nacionalidad <- iconv(nacionalidades$Nacionalidad, from = "UTF-8",
to = "ASCII//TRANSLIT")
nac_agrup <- nacionalidades %>%
group_by(Nacionalidad)%>%
summarise(cantidad = n())%>%
arrange(Nacionalidad)
print(nac_agrup$Nacionalidad)
## [1] "albanes" "albanesa"
## [3] "aleman" "alemana"
## [5] "alemania" "argentina"
## [7] "australia" "australiana"
## [9] "australiano" "austria"
## [11] "austriaca" "austriaco"
## [13] "austro" "austrohungara"
## [15] "bangladesi" "belga"
## [17] "bengali" "bielorrusa"
## [19] "birmana" "brasilena"
## [21] "britanica" "britanicaaustraliana"
## [23] "britanicabritanica" "britanicairlandesa"
## [25] "britanico" "britanicobritanico"
## [27] "britanicoestadounidense" "canadaestadounidense"
## [29] "canadiense" "checoeslovaco"
## [31] "checoslovaca" "chilena"
## [33] "china" "chinaestadounidense"
## [35] "chino" "chipriota"
## [37] "colombiana" "colombiano"
## [39] "congolena" "costarricense"
## [41] "danesa" "egipcia"
## [43] "egipcio" "en"
## [45] "escoces" "eslovena"
## [47] "espanola" "estadounidense"
## [49] "estadounidensebritanico[1]<u+200b>" "etiope"
## [51] "fines" "finlandes"
## [53] "finlandesa" "frances"
## [55] "francesa" "francia"
## [57] "galesa" "germano"
## [59] "ghanesa" "griega"
## [61] "guatemalteca" "guatemalteco"
## [63] "hungara" "hungaro"
## [65] "india" "indio"
## [67] "ingles" "irani"
## [69] "iraqui" "irlandes"
## [71] "irlandesa" "islandesa"
## [73] "israeli" "italia"
## [75] "italiana" "italiano"
## [77] "japon" "japones"
## [79] "japones." "japonesa"
## [81] "japonesajaponesa" "japonesjapones"
## [83] "keniana" "liberiana"
## [85] "mexicana" "mexicano"
## [87] "neerlandes" "neerlandesa"
## [89] "neozelandesa" "nigerianigeria"
## [91] "norirlandesa" "noruega"
## [93] "noruego" "pakistan"
## [95] "pakistani" "palestino"
## [97] "peruana" "polaca"
## [99] "polaco" "portuguesa"
## [101] "prusiano" "rumana"
## [103] "rusa" "rusiarusia"
## [105] "ruso" "santalucense"
## [107] "sovietica" "sovietico"
## [109] "sudafricana" "sudafricano"
## [111] "sudafricanoestadounidense" "sueca"
## [113] "suecia" "sueciasuecia"
## [115] "sueco" "suecosueco"
## [117] "suiza" "suizo"
## [119] "surcoreana" "taiwanes"
## [121] "timorense" "trinitense"
## [123] "turca" "ucraniano"
## [125] "venezolana" "vietnamita"
## [127] "yaleman" "ybritanica"
## [129] "ybritanico" "yemeni"
## [131] "yestadounidense" "yitaliano"
## [133] "yneozelandes"
Tal como se puede ver, todavía nos quedan más cambios para hacer pero estos son mucho más puntuales, por ejemplo para la nacionalidad alemana existen tres categorías: aleman, alemana, alemania. Estos se podrían trabajar en R con la función gsub pero son muchos los cambios y el código sería super extenso, siendo más propenso a los errores y más lento. Para ello, se ha decidido descargar este objeto en un csv y poder trabajarlo de forma manual en Excel.
## write.csv(nac_agrup, "nac_agrup.csv")
nac_agrup2 <- read.csv("nac_agrup2.csv")
nacionalidades <- left_join(nacionalidades, nac_agrup2, by = "Nacionalidad")
nacionalidades <- nacionalidades %>%
separate(Nacionalidad_2,sep = "-",into=c("Nacionalidad1","Nacionalidad2"))%>%
pivot_longer(cols = c("Nacionalidad1", "Nacionalidad2"),
names_to = "NroNacionalidad", values_to = "Nacionalidad_2") %>%
filter(!is.na(Nacionalidad_2)) %>%
filter(Nacionalidad != "en") %>%
select(-NroNacionalidad, -Nacionalidad)
Comenzamos con el análisis
¿Cuál es el top ten de nacionalidades premiadas?
ggplot(nacionalidades %>%
group_by(Nacionalidad_2)%>%
summarise(cantidad=n())%>%
arrange(desc(cantidad))%>%
head(10))+
geom_bar(aes(x = reorder(Nacionalidad_2, cantidad), weight = cantidad), fill ="blue")+
labs(title = "Las 10 nacionalidades más premiadas",
x = "Nacionalidad",
y = "Cantidad",
caption = "Fuente: Producción propia a partir de Wikipedia")+
theme(axis.text.x = element_text(colour = "gray25",size = 8, angle = 90))
Tal como podemos ver en el gráfico, las nacionalidades más premiadas son: