I am using the below dataset, “Baby Names from Social Security Card Applications - National Level Data”

https://catalog.data.gov/dataset/baby-names-from-social-security-card-applications-national-level-data

Data for each year is stored in a different text file. I am only analyzing data from 2000-2017 but this logic will handle all the files in the folder.

Load Package

library(tidyverse)
require(stringr)
library(kableExtra)

Load data

col_names <- c('name', 'sex', 'count', 'year' )

# This is used to store all  names from all  files. 
Names <- data.frame()


# This funciton will read the file and append names to "Names" varible outside the function. 
read_files <- function(file_name){
    
  x <- read.csv(file_name, header = F, stringsAsFactors =  F) %>%  
      mutate(year = as.numeric( str_extract(file_name,'\\d+')))
  
  Names <<-  bind_rows(x,Names)
  
  return('')  
}

# Read names from all the files with "yob" in the file name.
filenames <- list.files( pattern="yob", full.names=TRUE)
jx <- lapply(filenames, FUN = read_files)

colnames(Names)<- col_names

boys_names <- Names %>%
  filter(sex =='M') 


girls_names <- Names %>%
  filter(sex =='F') 

2017 Top 10 Names

popular_names_17_boys <- boys_names %>% 
            filter(year == 2017) %>%
            top_n(10, count) %>%
            select(name, count,sex)

popular_names_17_girls <- girls_names %>% 
  filter(year == 2017) %>%
  top_n(10,count) %>%
  select(name, count,sex) 

top_names_17 <- data.frame(popular_names_17_girls$name, popular_names_17_boys$name)
colnames(top_names_17) <- c("Girls","Boys")

  kable(top_names_17) %>%
    kable_styling(bootstrap_options = c("striped", "hover", "condensed", "responsive"))
Girls Boys
Emma Liam
Olivia Noah
Ava William
Isabella James
Sophia Logan
Mia Benjamin
Charlotte Mason
Amelia Elijah
Evelyn Oliver
Abigail Jacob