# Muestra la fecha de última ejecución del proyecto
print(paste0("Última ejecución: ", date()))
Utilizando las bases de datos de la Administración del Seguro Social, analizamos los nombres más usados en US en cada año desde 1880 hasta 2017 y crearemos interesantes gráficos dinámicos.
Será interesante desvelar la existencia de coincidencias entre los nombres más populares y sucesos socio-culturales como el éxito de algún álbum musical o alguna producción cinematográfica.
Con los ejercicios de este proyecto podremos practicar el uso de variables, dataframes, ciclos y visualizaciones dinámicas con ggplot2 y plotly.
Descarga aquí la base de datos:
Social Security
Importamos las librerías que usaremos en el proyecto. La librería dplyr nos permitirá realizar manipulación de dataframes mientras que las librerías ggplot2 y plotly nos permitirán crear interesantes visualizaciones.
# Con este comando desactivamos la impresión de mensaje relacionados con la librerías
#options(warn=-1)
suppressMessages(library(dplyr))
suppressMessages(library(plotly))
library(dplyr)
library(ggplot2)
library(plotly)
library(RColorBrewer)
library(htmlwidgets)
Establecemos el directorio de trabajo en donde se encuentran los archivos con los datos
setwd("/home/pakin/Documents/names")
Importamos los 139 archivos (uno por cada año)
temp = list.files(pattern="*.txt")
myfiles = lapply(temp, read.csv, header = FALSE)
#head(myfiles)
Filtramos el dataframe eligiendo sólo el primer renglón y los registros de mujeres
pop_names <- filter(data.frame(myfiles[1]), V2 == "F")[1, c(1, 3)]
Con el siguiente ciclo for procesamos todos los archivos de datos tomando la primera fila (con la frecuencia máxima) y filtrándolo por la variable correspondiente al sexo de la persona. El resultado lo integramos en un sólo dataframe llamado pop_names.
for(i in 2:length(myfiles)){
pop_names <- rbind(pop_names, filter(data.frame(myfiles[i]), V2 == "F")[1 , c(1,3)])
}
Establecemos niveles (categorías) para la variable tipo factor V1 (nombres)
pop_names$V1 <- factor(pop_names$V1, levels = unique(pop_names$V1))
Creamos una serie con los años desde 1880 hasta 2017
Year <- seq(1880, 2017, 1)
Creamos un sólo dataframe con nombre, frecuencia y año
pop_names <- cbind(pop_names, Year)
Renombramos las columnas y el resultado es un dataframe en donde cada renglón contiene la información del nombre con mayor frecuencia el correspondiente año.
names(pop_names) <- c("NOMBRE", "FRECUENCIA", "AÑO")
head(pop_names, 10)
Observemos la estructra del dataframe
str(pop_names)
Generamos un gráfico de barras utilizando la librería ggplot2 añadiendo algunos estéticos y temas.
p <- ggplot(pop_names, aes(x = AÑO, y = FRECUENCIA)) +
geom_bar(aes(fill = NOMBRE), stat = "identity") +
labs(title = "Nombres Femeninos Más Usados en US por Año") +
theme(plot.title = element_text(hjust = 0)) +
scale_x_continuous(breaks = seq(1880, 2015, by = 10)) +
scale_y_continuous(breaks = seq(0, 100000, by = 10000)) +
scale_fill_brewer(palette = "Set3") +
theme(legend.text = element_text(size = 10)) +
theme(legend.position = c(0, 0.7)) +
theme(legend.background = element_rect(size=0.1, linetype = "solid", colour = "darkblue"))
p <- ggplotly(p)
setwd("/home/pakin/Documents/desarrolloWeb/PakinV4/me/images")
htmlwidgets::saveWidget(p, "nombresm.html")
setwd("/home/pakin/Documents/pakin/images")
htmlwidgets::saveWidget(p, "nombresm.html")
Increíblemente, el nombre Mary se mantuvo durante 75 años como el nombre más usado. También observamos que el uso del nombre Linda explota desde 1947, coincidiendo con la llegada de la canción Linda (Ray Noble & Buddy Clark, Columbia Records) a la revista Billboard el 21 de marzo de 1947 y alcanzando el número uno durante varios meses. Sobre el nombre Jennifer, existen diferentes análisis de por qué fue el nombre más popular durante aproximadamente 15 años, solo hay que buscarlo en Google. El nombre más popular recientemente es Emma.
pop_names_m <- filter(data.frame(myfiles[1]), V2 == "M")[1, c(1, 3)]
for(i in 2:length(myfiles)){
pop_names_m <- rbind(pop_names_m, filter(data.frame(myfiles[i]), V2 == "M")[1, c(1,3)])
}
pop_names_m$V1 <- factor(pop_names_m$V1, levels = unique(pop_names_m$V1))
Year <- seq(1880, 2017, 1)
pop_names_m <- cbind(pop_names_m, Year)
names(pop_names_m) <- c("NOMBRE", "FRECUENCIA", "AÑO")
head(pop_names_m, 10)
str(pop_names_m)
p <- ggplot(pop_names_m, aes(x = AÑO, y = FRECUENCIA)) +
geom_bar(aes(fill = NOMBRE), stat = "identity") +
labs(title = "Nombres Masculinos Más Usados en US por Año") +
scale_x_continuous(breaks = seq(1880, 2015, by = 10)) +
scale_y_continuous(breaks = seq(0, 100000, by = 10000)) +
scale_fill_brewer(palette = "Set1") +
theme(plot.title = element_text(hjust = 0)) +
theme(legend.text = element_text(size = 10)) +
theme(legend.position = c(0, 0.7)) +
theme(legend.background = element_rect(size = 0.1, linetype = "solid", colour = "darkblue"))
p <- ggplotly(p)
setwd("/home/pakin/Documents/desarrolloWeb/PakinV4/me/images")
htmlwidgets::saveWidget(p, "nombresh.html")
setwd("/home/pakin/Documents/pakin/images")
htmlwidgets::saveWidget(p, "nombresh.html")
Sin ser una sorpresa, el nombre más popular durante 45 años fue John. La popularidad en el uso del nombre James, coincide con el estreno de la película "El regreso de Frank James" el 6 de agosto de 1940 y protagonizada por Henry Fonda. El nombre de Micheal se mantuvo durante unos 43 años como el más popular. El nombre de Jacob comienza a ser popular a partir de 1999, coincidiendo con el estreno de la película "Jakob the Liar", protagonizada por Robin Williams. Recientemente el nombre más popular es Liam.