You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
71 lines
2.8 KiB
71 lines
2.8 KiB
library(sf)
|
|
library(rvest)
|
|
library(hrbrthemes)
|
|
library(curlconverter)
|
|
library(ggwordcloud)
|
|
library(tidyverse)
|
|
|
|
if (!file.exists(here::here("data/maine-names.rds"))) {
|
|
|
|
cURL <- "curl 'https://www.ssa.gov/cgi-bin/namesbystate.cgi' -H 'Connection: keep-alive' -H 'Cache-Control: max-age=0' -H 'DNT: 1' -H 'Upgrade-Insecure-Requests: 1' -H 'User-Agent: Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_2) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/79.0.3945.36 Safari/537.36' -H 'Sec-Fetch-User: ?1' -H 'Origin: https://www.ssa.gov' -H 'Content-Type: application/x-www-form-urlencoded' -H 'Accept: text/html,application/xhtml+xml,application/xml;q=0.9,image/webp,image/apng,*/*;q=0.8,application/signed-exchange;v=b3;q=0.9' -H 'Sec-Fetch-Site: same-origin' -H 'Sec-Fetch-Mode: navigate' -H 'Referer: https://www.ssa.gov/cgi-bin/namesbystate.cgi' -H 'Accept-Encoding: gzip, deflate, br' -H 'Accept-Language: en-US,en;q=0.9,la;q=0.8' -H 'Cookie: TS014661b0=01cfd667a591a309251d155252645f7ba8d3e92ca313a0cc50797331d66b9eca4cda5b1bf09262fc2dd204124dd994ed097d2b0147; TS01838516=017e2f91c304e1561be5e212ee69533011530d7386dacfbaf9306ecd64d33947273a6a054c612f05721de9c9378d41fde9c08cf713' --data 'state=ME&year=2017' --compressed"
|
|
|
|
straighten() %>%
|
|
make_req() -> req
|
|
|
|
get_names <- function(yr = 2018) {
|
|
|
|
httr::POST(
|
|
url = "https://www.ssa.gov/cgi-bin/namesbystate.cgi",
|
|
body = list(
|
|
state = "ME",
|
|
year = as.character(yr)
|
|
),
|
|
encode = "form"
|
|
) -> res
|
|
|
|
out <- httr::content(res, as = "parsed", encoding = "UTF-8")
|
|
|
|
html_node(out, xpath = ".//table[@bordercolor = '#aaabbb']") %>%
|
|
html_table(header = TRUE, trim = TRUE) %>%
|
|
as_tibble() %>%
|
|
janitor::clean_names() %>%
|
|
mutate(year = yr)
|
|
|
|
}
|
|
|
|
maine_names <- map_df(1960:2018, get_names)
|
|
|
|
saveRDS(maine_names, here::here("data/maine-names.rds"))
|
|
|
|
}
|
|
|
|
maine_names <- readRDS(here::here("data/maine-names.rds"))
|
|
|
|
if (!file.exists(here::here("data/me-silhouette.png"))) {
|
|
|
|
st_read(here::here("data/me-counties.json")) %>%
|
|
st_set_crs(4326) -> maine
|
|
|
|
ggplot() +
|
|
geom_sf(data = maine, fill = "black", color = "black") +
|
|
coord_sf(datum = NA) +
|
|
theme_ipsum_es(grid="") +
|
|
theme(axis.text = element_blank()) -> gg
|
|
|
|
ggsave(here::here("data/me-silhouette.png"), plot = gg, width = 500/72, height = 500/72, dpi = 96)
|
|
|
|
}
|
|
|
|
maine_names %>%
|
|
{
|
|
bind_rows(
|
|
select(., name = male_name, ct = number_of_males) %>%
|
|
count(name, wt = ct, name = "ct") %>%
|
|
mutate(color = scales::brewer_pal(palette = "PuBu")(9)[cut(ct, 9)]),
|
|
select(., name = female_name, ct = number_of_females) %>%
|
|
count(name, wt = ct, name = "ct") %>%
|
|
mutate(color = scales::brewer_pal(palette="OrRd")(9)[cut(ct, 9)])
|
|
) %>%
|
|
arrange(desc(ct))
|
|
} %>%
|
|
write_delim(here::here("data/wordart.csv"), delim=";", col_names = FALSE) -> wc_df
|
|
|