From 89da07fdae0d457f8eac091283548b371ff8a29a Mon Sep 17 00:00:00 2001 From: Alex Gebben Work Date: Thu, 6 Nov 2025 17:21:41 -0700 Subject: [PATCH] Major updates to auto-data gathering plus notes --- .../Mortality_Rates/README_MORTALITY.txt | 7 +- .../Mortality_Rates/README_MORTALITY_DATA.txt | 1 - Data/Raw_Data/Population/Pop_1970s.xls | Bin 15360 -> 0 bytes Data/Raw_Data/Population/Pop_1980s.xls | Bin 128512 -> 0 bytes Data/Raw_Data/Population/Pop_1990s.xls | Bin 41472 -> 0 bytes .../1_Download_and_Process_Population_Data.r | 143 ++++++++++++++++-- .../2_Download_and_Process_Demographic_Data.r | 55 ++++++- 7 files changed, 185 insertions(+), 21 deletions(-) delete mode 100644 Data/Raw_Data/Mortality_Rates/README_MORTALITY_DATA.txt delete mode 100644 Data/Raw_Data/Population/Pop_1970s.xls delete mode 100644 Data/Raw_Data/Population/Pop_1980s.xls delete mode 100644 Data/Raw_Data/Population/Pop_1990s.xls diff --git a/Data/Raw_Data/Mortality_Rates/README_MORTALITY.txt b/Data/Raw_Data/Mortality_Rates/README_MORTALITY.txt index eacecbf..22506e7 100644 --- a/Data/Raw_Data/Mortality_Rates/README_MORTALITY.txt +++ b/Data/Raw_Data/Mortality_Rates/README_MORTALITY.txt @@ -1,5 +1,10 @@ Data files gathered manually from: +National Institute of Health HDPules: An Ecosystem of Health Disparities and Minority Health Resources at https://hdpulse.nimhd.nih.gov/data-portal/mortality/table?cod=247&cod_options=cod_15&ratetype=aa&ratetype_options=ratetype_2&race=00&race_options=race_6&sex=2&sex_options=sex_3&age=177&age_options=age_11&ruralurban=0&ruralurban_options=ruralurban_3&yeargroup=5&yeargroup_options=year5yearmort_1&statefips=56&statefips_options=area_states&county=56000&county_options=counties_wyoming&comparison=counties_to_us&comparison_options=comparison_counties&radio_comparison=areas&radio_comparison_options=cods_or_areas -Each file is single age group, so age weighting does not apply despite the variable names +Each file is single age group, so age weighting does not apply despite the variable names. Each age group file is named sequentially with a prefix “A_” for the first age group and a prefix “I_” for the oldest. There are separate directories for each sex. The cleaning script uses this directory structure to extract the right files and merge them into one data set. + +These files must be manually downloaded because there is a filter feature on the web page that is used to select the county and age. While there may be a way to scrape the data with code the trade off on my time was not worth it. Future runs will need to check these records, and can download the files to match this directory structure, in order to process a update in death rates. + +Valid data as of Nov 6 2025 Alex Gebben diff --git a/Data/Raw_Data/Mortality_Rates/README_MORTALITY_DATA.txt b/Data/Raw_Data/Mortality_Rates/README_MORTALITY_DATA.txt deleted file mode 100644 index 58887b8..0000000 --- a/Data/Raw_Data/Mortality_Rates/README_MORTALITY_DATA.txt +++ /dev/null @@ -1 +0,0 @@ -[1] "Data files gathered manually from:\n\n\n\n\nhttps://hdpulse.nimhd.nih.gov/data-portal/mortality/table?cod=247&cod_options=cod_15&ratetype=aa&ratetype_options=ratetype_2&race=00&race_options=race_6&sex=2&sex_options=sex_3&age=177&age_options=age_11&ruralurban=0&ruralurban_options=ruralurban_3&yeargroup=5&yeargroup_options=year5yearmort_1&statefips=56&statefips_options=area_states&county=56000&county_options=counties_wyoming&comparison=counties_to_us&comparison_options=comparison_counties&radio_comparison=areas&radio_comparison_options=cods_or_areas\n\n\n\n\nEach file is single age group, so age weighting does not apply despite the variable names" diff --git a/Data/Raw_Data/Population/Pop_1970s.xls b/Data/Raw_Data/Population/Pop_1970s.xls deleted file mode 100644 index d41a46613eef640bd97e70484b44ed828acb72ad..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 15360 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 Zd=AAn1a$;HUwhVkf&TN`99_J){0BT(U+Dk< diff --git a/Data/Raw_Data/Population/Pop_1980s.xls b/Data/Raw_Data/Population/Pop_1980s.xls deleted file mode 100644 index e1e14fcae491aa21ea9604298309401fd84015e1..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 128512 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 diff --git a/Data/Raw_Data/Population/Pop_1990s.xls b/Data/Raw_Data/Population/Pop_1990s.xls deleted file mode 100644 index d8d219dcc7a1660f33fe1e0953a9f21c1d958585..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 41472 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 diff --git a/Scripts/1_Download_and_Process_Population_Data.r b/Scripts/1_Download_and_Process_Population_Data.r index 9ad04bb..23771e9 100644 --- a/Scripts/1_Download_and_Process_Population_Data.r +++ b/Scripts/1_Download_and_Process_Population_Data.r @@ -2,14 +2,42 @@ library(rvest) library(tidyverse) library(readxl) +library(curl) #To archive the html files #setwd("../") ###Create Location to Save raw data sets if(!exists("SAVE_LOC_RAW")){SAVE_LOC_RAW <-"./Data/Raw_Data/"} dir.create(SAVE_LOC_RAW, recursive = TRUE, showWarnings = FALSE) + SAVE_LOC_RAW_POP <- paste0(SAVE_LOC_RAW,"Population/") + dir.create(SAVE_LOC_RAW_POP , recursive = TRUE, showWarnings = FALSE) + + RAW_HTML_LOC <- paste0(SAVE_LOC_RAW_POP,"HTML_Population_Files/") + dir.create(RAW_HTML_LOC, recursive = TRUE, showWarnings = FALSE) + + RAW_EXCEL_LOC <- paste0(SAVE_LOC_RAW_POP,"Excel_Population_Files/") + dir.create(RAW_EXCEL_LOC, recursive = TRUE, showWarnings = FALSE) + +##Start a log file about the data +sink(file=paste0(SAVE_LOC_RAW_POP,"README_POPULATION_DATA.txt"),append=FALSE) + cat("Most data is supplied by the Wyoming Department of Administration & Information Economic Analysis Division (WIEAD). Their data is either directly pulled from other sources like the census or is interpolated using this data (such as deaths, and migration).\n This folder saves the raw HTML of a few population data source, which were stored as a web table rather than a CSV or excel file so that in the future if the web pages are removed or changed the code will still run, and can be updated with new information.\nSome files are supplied as HTML tables from a webpage, while others are excel files. ") +sink() + + + ########County, Death, Birth and Migration Data #Data found on the page http://eadiv.state.wy.us/pop/ #Website States: Wyoming Economic Analysis Division based on U.S. Census Bureau's population estimation and vital stats above -PAGE <- read_html("http://eadiv.state.wy.us/pop/BirthDeathMig.htm") +BIRTH_DEATH_MIGRATION_HTML_LOC <- paste0(RAW_HTML_LOC,"County_Migration_Deaths_Births.html") +try(curl_download("http://eadiv.state.wy.us/pop/BirthDeathMig.htm",destfile=BIRTH_DEATH_MIGRATION_HTML_LOC )) #Download the file rather than directly use the website, so a backup is available if it ever goes offline. +#Add to the notes +sink(file=paste0(SAVE_LOC_RAW_POP,"/README_POPULATION_DATA.txt"),append=TRUE) + cat("\n\n 1) Wyoming births, deaths, and net migration by county of residence: 1971 - 2023: + County_Migration_Deaths_Births.htm comes from http://eadiv.state.wy.us/pop/BirthDeathMig.htm + Data Type: HTML table + Data Source: WIEAD + Original Source: Wyoming Department of Health and U.S. Census Bureau") +sink() + +PAGE <- read_html(BIRTH_DEATH_MIGRATION_HTML_LOC ) NODE <- html_element(PAGE ,"table") TBL <- html_table(NODE) @@ -36,7 +64,17 @@ WY_COUNTY_DATA_SET <- pivot_wider(Data,names_from=Type,values_from=Pop_Change) % WY_COUNTY_DATA_SET[,"County"] <- gsub(" ","_",WY_COUNTY_DATA_SET %>% pull(County)) ########################City and County Population Data 2020 to 2024 -PAGE <- read_html('http://eadiv.state.wy.us/pop/Place-24EST.htm') +CITY_POPULATION_A <- paste0(RAW_HTML_LOC,"Wyoming_City_and_County_Population_2020_2024.html") +try(curl_download("http://eadiv.state.wy.us/pop/Place-24EST.htm",destfile=CITY_POPULATION_A)) #Download the file rather than directly use the website, so a backup is available if it ever goes offline. +#Add to the notes +sink(file=paste0(SAVE_LOC_RAW_POP,"README_POPULATION_DATA.txt"),append=TRUE) + cat("\n 2) Wyoming Incorporated Place Population Estimates: April 1, 2020 to July 1, 2024 + Wyoming_City_and_County_Population_2020_2024.html comes from http://eadiv.state.wy.us/pop/Place-24EST.htm + Data Type: HTML table + Data Source: WIEAD + Original Source: U.S. Census Bureau, Population Division Wyoming Department of Health and U.S. Census Bureau") +sink() +PAGE <- read_html(CITY_POPULATION_A) NODE <- html_element(PAGE ,"table") TBL <- html_table(NODE) @@ -59,7 +97,18 @@ CITY_POP <- TBL[sort(c(grep("County",TBL %>% pull(County),invert=TRUE,ignore.cas CITY_POP$County <- gsub(" ","_",gsub("Balance of","Unincorporated",gsub(" County","",gsub(" city","",gsub(" town","",CITY_POP$County,ignore.case=TRUE),ignore.case=TRUE),ignore.case=TRUE),ignore.case=TRUE)) CITY_POP <- CITY_POP %>% rename("City"=County) ########################City Population Data 2010 to 2020 -PAGE <- read_html('http://eadiv.state.wy.us/pop/sub-est11-19.htm') +CITY_POPULATION_B <- paste0(RAW_HTML_LOC,"Wyoming_City_and_County_Population_2010_2020.html") +try(curl_download('http://eadiv.state.wy.us/pop/sub-est11-19.htm',destfile=CITY_POPULATION_B)) #Download the file rather than directly use the website, so a backup is available if it ever goes offline. +#Add to the notes +sink(file=paste0(SAVE_LOC_RAW_POP,"README_POPULATION_DATA.txt"),append=TRUE) + cat("\n 3) Intercensal Estimates of the Resident Population for Incorporated Places in Wyoming: April 1, 2010 to April 1, 2020 + Data Type: HTML table + Wyoming_City_and_County_Population_2010_2020.html comes from http://eadiv.state.wy.us/pop/sub-est11-19.htm + Data Source: WIEAD + Original Source: Source: U.S. Census Bureau, Population Division" ) +sink() + +PAGE <- read_html(CITY_POPULATION_B ) NODE <- html_element(PAGE ,"table") TBL <- html_table(NODE) ST <- which(toupper(TBL$X1)==toupper("Afton town, Wyoming")) @@ -74,7 +123,18 @@ TBL$City <- gsub(" ","_",gsub(" $","",gsub("\r|\n| Wyoming|,| town| city","",TBL TBL <- TBL %>% filter(Year!=2020) CITY_POP <- rbind(TBL,CITY_POP) ########################County Population Data 2010 to 2020 -PAGE <- read_html('http://eadiv.state.wy.us/pop/ctyest11-19.htm') +COUNTY_POPULATION_B <- paste0(RAW_HTML_LOC,"Wyoming_County_Population_2010_2020.html") +try(curl_download('http://eadiv.state.wy.us/pop/ctyest11-19.htm',destfile=COUNTY_POPULATION_B)) #Download the file rather than directly use the website, so a backup is available if it ever goes offline. +#Add to the notes +sink(file=paste0(SAVE_LOC_RAW_POP,"README_POPULATION_DATA.txt"),append=TRUE) + cat("\n 4) Intercensal Estimates of the Resident Population for Counties in Wyoming: April 1, 2010 to April 1, 2020 + Wyoming_County_Population_2010_2020.html comes from http://eadiv.state.wy.us/pop/ctyest11-19.htm + Data Type: HTML table + Data Source: WIEAD + Original Source: U.S. Census Bureau, Population Division" ) +sink() + +PAGE <- read_html(COUNTY_POPULATION_B ) NODE <- html_element(PAGE ,"table") TBL <- html_table(NODE) ST <- grep("Albany",TBL$X1) @@ -90,7 +150,18 @@ TBL <- TBL %>% filter(Year!=2020) COUNTY_POP <- rbind(TBL,COUNTY_POP) ########################County and City Population Data 2000 to 2010 -PAGE <- read_html('http://eadiv.state.wy.us/pop/sub-est01-09.htm') +CITY_POPULATION_C <- paste0(RAW_HTML_LOC,"Wyoming_City_and_County_Population_2000_2009.html") +try(curl_download('http://eadiv.state.wy.us/pop/sub-est01-09.htm',destfile=CITY_POPULATION_C)) #Download the file rather than directly use the website, so a backup is available if it ever goes offline. +#Add to the notes +sink(file=paste0(SAVE_LOC_RAW_POP,"README_POPULATION_DATA.txt"),append=TRUE) + cat("\n 5) Intercensal Estimates of the Resident Population for Cities and Towns of Wyoming: April 1, 2000 to July 1, 2010 + Wyoming_City_and_County_Population_2000_2009.html comes from 'http://eadiv.state.wy.us/pop/sub-est01-09.htm' + Data Type: HTML table + Data Source: WIEAD + Original Source: U.S. Census Bureau, Population Division" ) +sink() + +PAGE <- read_html(CITY_POPULATION_C) NODE <- html_element(PAGE ,"table") TBL <- html_table(NODE) @@ -119,11 +190,18 @@ CITY_POP$City <- gsub("LaGrange","La_Grange",CITY_POP$City) COUNTY_POP <- rbind(COUNTY_TBL,COUNTY_POP) ####################County and City Population Data for 1990-2000 #Location to save any raw population files. Most files are not saved since they are pulled from a html and not a excel file, but older files are only available as excel files -SAVE_LOC_RAW_POP <- paste0(SAVE_LOC_RAW,"/Population") -dir.create(SAVE_LOC_RAW_POP , recursive = TRUE, showWarnings = FALSE) +POP_FILE_1990 <- paste0(RAW_EXCEL_LOC,"Wyoming_County_Population_1990_2000.xls") +try(if(!file.exists(POP_FILE_1990)){download.file('http://eadiv.state.wy.us/pop/c&sc90_00.xls',POP_FILE_1990)}) + +#Add to the notes +sink(file=paste0(SAVE_LOC_RAW_POP,"README_POPULATION_DATA.txt"),append=TRUE) + cat("\n 6) Population for Wyoming, Counties, Cities, and Towns: 1990 to 2000 + Wyoming_County_Population_1980_1990.xls comes from 'http://eadiv.state.wy.us/pop/c&sc90_00.xls' + Data Type: Excel file + Data Source: WIEAD + Original Source: U.S. Census Bureau, Population Division" ) +sink() -POP_FILE_1990 <- paste0(SAVE_LOC_RAW_POP,"/Pop_1990s.xls") -if(!file.exists(POP_FILE_1990)){download.file('http://eadiv.state.wy.us/pop/c&sc90_00.xls',POP_FILE_1990)} TEMP <- read_xls(POP_FILE_1990,skip=2)[-1:-4,] colnames(TEMP)[1] <- "County" TEMP <- TEMP[1:which(TEMP[,1]=="Wind River Res."),] @@ -143,8 +221,18 @@ TEMP_CITY <- TEMP_CITY %>% filter(Year!=2000) try(rm(TEMP_CITY,TEMP_COUNTY,TEMP)) ####################County and City Population Data for 1980-1990 -POP_FILE_1980 <- paste0(SAVE_LOC_RAW_POP ,"/Pop_1980s.xls") -if(!file.exists(POP_FILE_1980)){download.file('http://eadiv.state.wy.us/pop/C&SC8090.xls',POP_FILE_1980)} +POP_FILE_1980 <- paste0(RAW_EXCEL_LOC,"/Wyoming_County_Population_1980_1990.xls") +try(if(!file.exists(POP_FILE_1980)){download.file('http://eadiv.state.wy.us/pop/C&SC8090.xls',POP_FILE_1980)}) + +#Add to the notes +sink(file=paste0(SAVE_LOC_RAW_POP,"README_POPULATION_DATA.txt"),append=TRUE) + cat("\n 7) Population for Wyoming, Counties and Municipalities: 1980 to 1990 + Wyoming_County_Population_1980_1990.xls comes from 'http://eadiv.state.wy.us/pop/C&SC8090.xls' + Data Type: Excel file + Data Source: WIEAD + Original Source: U.S. Census Bureau, Population Division" ) +sink() + TEMP <- read_xls(POP_FILE_1980,skip=2)[-1:-4,] colnames(TEMP)[1] <- "County" @@ -169,7 +257,18 @@ COUNTY_POP <- rbind(TEMP_COUNTY,COUNTY_POP) try(rm(TEMP_CITY,TEMP_COUNTY,TEMP)) ####################County Population Data for 1970-1980 -POP_FILE_1970 <- paste0(SAVE_LOC_RAW_POP ,"/Pop_1970s.xls") +POP_FILE_1970 <- paste0(RAW_EXCEL_LOC,"/Wyoming_County_Population_1970_1980.xls") +try(if(!file.exists(POP_FILE_1970)){download.file('http://eadiv.state.wy.us/pop/Cnty7080.xls',POP_FILE_1970)}) + +#Add to the notes +sink(file=paste0(SAVE_LOC_RAW_POP,"README_POPULATION_DATA.txt"),append=TRUE) + cat("\n 8) Wyoming and County Population: 1970 to 1980 + Wyoming_County_Population_1970_1980.xls comes from 'http://eadiv.state.wy.us/pop/Cnty7080.xls' + Data Type: Excel file + Data Source: WIEAD + Original Source: U.S. Census Bureau, Population Division" ) +sink() + if(!file.exists(POP_FILE_1970)){download.file('http://eadiv.state.wy.us/pop/Cnty7080.xls',POP_FILE_1970)} TEMP <- read_xls(POP_FILE_1970,skip=2)[-1:-4,] @@ -183,7 +282,20 @@ TEMP <- TEMP %>% filter(Year!=1980) COUNTY_POP <- rbind(TEMP,COUNTY_POP) #ggplot(aes(x=Year,y=Population,group=County,color=County),data=COUNTY_POP)+geom_line() try(rm(TEMP)) -###########Old data addtion:Period Ends in 1970 +###########Old data addition:Period Ends in 1970 +POP_FILE_OLD <- paste0(RAW_HTML_LOC,"Wyoming_City_and_County_Population_Prior_to_1970.htm") +try(curl_download('http://eadiv.state.wy.us/demog_data/cntycity_hist.htm',destfile=POP_FILE_OLD)) + +#Add to the notes +sink(file=paste0(SAVE_LOC_RAW_POP,"README_POPULATION_DATA.txt"),append=TRUE) + cat("\n 9) Historical decennial census population for Wyoming counties, cities, and towns + Wyoming_City_and_County_Population_Prior_to_1970.htm comes from 'http://eadiv.state.wy.us/demog_data/cntycity_hist.htm' + Data Type: HTML Tables + Data Source: WIEAD + Original Source: U.S. Census Bureau, Population Division + Note: Two tables are included complicating extraction. The values are manually entered in R rather than scarped like the other data sets" ) +sink() + #See in part http://eadiv.state.wy.us/demog_data/cntycity_hist.htm LN_OLD <- c(12487,10894,10286,9023,9018,8640) #Missing in 1910 Year <- seq(1920,1970,by=10) @@ -224,5 +336,8 @@ write_csv(CITY_POP,paste0(CSV_SAVE,"/All_Wyoming_City_Populations.csv" )) saveRDS(WY_COUNTY_DATA_SET,paste0(RDS_SAVE,"/All_Wyoming_County_Populations.Rds" )) write_csv(WY_COUNTY_DATA_SET,paste0(CSV_SAVE,"/All_Wyoming_County_Populations.csv" )) - +run_datetime <- format(Sys.time(), "%Y-%m-%d %H:%M:%S") +sink(file=paste0(SAVE_LOC_RAW_POP,"README_POPULATION_DATA.txt"),append=TRUE) + cat(paste0("\n--- Run Date: ", run_datetime, " ---\n")) +sink() diff --git a/Scripts/2_Download_and_Process_Demographic_Data.r b/Scripts/2_Download_and_Process_Demographic_Data.r index b7e111d..5dd5071 100644 --- a/Scripts/2_Download_and_Process_Demographic_Data.r +++ b/Scripts/2_Download_and_Process_Demographic_Data.r @@ -1,9 +1,33 @@ library(tidyverse) library(readxl) - +#setwd("../") ###################Demographics -if(!file.exists("./Data/Demo_Single_Year_2020s.xls")){download.file('http://eadiv.state.wy.us/Pop/CO_SYASEX24.xlsx',"./Data/Demo_Single_Year_2020s.xls")} -TEMP <- read_xlsx("./Data/Demo_Single_Year_2020s.xls",skip=2)[,-1] + #Set up saving locations + if(!exists("SAVE_LOC_RAW")){SAVE_LOC_RAW <-"./Data/Raw_Data/"} + RAW_DEMO_LOC <- paste0(SAVE_LOC_RAW,"Demographics/") + dir.create(RAW_DEMO_LOC, recursive = TRUE, showWarnings = FALSE) + #Demographic Reference data + if(!exists("SAVE_LOC_REF")){SAVE_LOC_REF <-paste0(RAW_DEMO_LOC,"Reference_Material_for_Demographics/")} + dir.create(SAVE_LOC_REF, recursive = TRUE, showWarnings = FALSE) + + + #Start a README file for the raw downloaded demographic data + sink(file=paste0(RAW_DEMO_LOC,"README_DEMOGRAPHIC_DATA.txt"),append=FALSE) + cat("Demographic data used to find age and sex distribution of county populations\n") + sink() +#####Gather data + C_FILE_PATH <- paste0(RAW_DEMO_LOC,"Wyoming_County_Sex_by_Year_of_Age_Demographic_Data_2020_2024.xls") + try(if(!file.exists(C_FILE_PATH)){download.file("http://eadiv.state.wy.us/Pop/CO_SYASEX24.xlsx",C_FILE_PATH)}) + #Append to the README for clarity of data sources +sink(file=paste0(RAW_DEMO_LOC,"/README_DEMOGRAPHIC_DATA.txt"),append=TRUE) + cat("\n\n 1) Annual County Resident Population Estimates by Single Year of Age and Sex: April 1, 2020 to July 1, 2024 + Wyoming_County_Sex_by_Year_of_Age_Demographic_Data_2020_2024.xls comes from http://eadiv.state.wy.us/Pop/CO_SYASEX24.xlsx + Data Type: Excel table + Data Source: Wyoming Department of Information and Economic Development (WIEAD) + Original Source: Census Bureau, Population Division, June 2025") +sink() + +TEMP <- read_xlsx(C_FILE_PATH,skip=2)[,-1] TEMP <- TEMP[1:(min(which(is.na(TEMP[,1])))-1),] TEMP <- TEMP[!grepl("Base",TEMP$YEAR,ignore.case=TRUE),] #There are two population values provided. I believe one is the census baseline, and one is a estimate in July. Keep the later estimate, to line up with the same seasonal collection pattern of the rest of the data TEMP$YEAR <- year(as.Date(substr((TEMP$YEAR),1,8),format="%m/%d/%Y")) @@ -11,10 +35,27 @@ colnames(TEMP) <- c("County","Year","Age","Number","Num_Male","Num_Female") TEMP$County <- gsub(" County","",TEMP$County,ignore.case=TRUE) DEM_2020 <- TEMP %>% select(-Number) ###Demographics all -DEM_DATA <- read_delim("Data/County_Demographics_Census/wy.1969_2023.singleages.through89.90plus.txt",delim=" ",col_names=c("ID","VALUES"),col_types=list('c','c')) -DEM_DATA$Year <- as.integer(substr(DEM_DATA$ID,1,4)) +try(DEM_DATA <- read_delim('https://seer.cancer.gov/popdata/yr1969_2023.singleages.through89.90plus/wy.1969_2023.singleages.through89.90plus.txt.gz',delim=" ",col_names=c("ID","VALUES"),col_types=list('c','c'))) +SEER_DATA_LOC <- paste0(RAW_DEMO_LOC,"Wyoming_County_Sex_by_Year_of_Age_Demographic_Data_1969_2023.csv") +if(!exists("DEM_DATA")){DEM_DATA <- read_csv(SEER_DATA_LOC )}else{ write_csv(DEM_DATA,SEER_DATA_LOC)} + + #Append to the README for clarity of data sources +sink(file=paste0(RAW_DEMO_LOC,"/README_DEMOGRAPHIC_DATA.txt"),append=TRUE) + cat("\n\n 2) Wyoming County-Level Population Files - Single-year Age Groups 1969 to 2023 + Wyoming_County_Sex_by_Year_of_Age_Demographic_Data_1969_2023.csv comes from https://seer.cancer.gov/popdata/yr1969_2023.singleages.through89.90plus/wy.1969_2023.singleages.through89.90plus.txt.gz + Data Type: gunzip (gz) file with coded data + Data Source: The National Cancer Institute surveillance, Epidemiology, and End Results Program + Original Source: Census Bureau (data processed for yearly estimates) + Note: See https://seer.cancer.gov/popdata/download.html for more data information and other State data. Raw data is parsed using the described data format (first number year, then fips code etc.). + The required fips codes are provided in the reference folder from https://github.com/kjhealy/fips-codes/raw/refs/heads/master/county_fips_master.csv.") +sink() + +DEM_DATA$Year <- as.numeric(substr(DEM_DATA$ID,1,4)) DEM_DATA$fips<- substr(DEM_DATA$ID,7,11) COUNTY_LIST <- read_csv("https://github.com/kjhealy/fips-codes/raw/refs/heads/master/county_fips_master.csv",col_types=list('c','c')) %>% filter(state_abbr=="WY") %>% select(fips,County=county_name) %>% mutate(County=gsub(" ","_",gsub(" County","",County,ignore.case=TRUE))) +FIPS_LOC <- paste0(SAVE_LOC_REF,"fips_codes.csv") +if(!exists("COUNTY_LIST")){ COUNTY_LIST <- read_csv(FIPS_LOC)}else{ write_csv(COUNTY_LIST,FIPS_LOC)} + DEM_DATA <- DEM_DATA %>% left_join(COUNTY_LIST) %>% select(-fips) #16=3 DEM_DATA$Sex <- ifelse(substr(DEM_DATA$VALUES,3,3)==1,"Male","Female") @@ -41,4 +82,8 @@ DEM_DATA <- rbind(DEM_2020,DEM_DATA) %>% ungroup %>% arrange(Year,Age) %>% uniq LIN_DEM <- DEM_DATA %>% filter(County=='Lincoln') saveRDS(LIN_DEM,paste0(RDS_SAVE,"/Full_Lincoln_County_Demographics.Rds" )) write_csv(LIN_DEM,paste0(CSV_SAVE,"/Full_Lincoln_County_Demographics.csv" )) +run_datetime <- format(Sys.time(), "%Y-%m-%d %H:%M:%S") +sink(file=paste0(SAVE_LOC_RAW_POP,"README_POPULATION_DATA.txt"),append=TRUE) + cat(paste0("\n--- Run Date: ", run_datetime, " ---\n")) +sink()