@ -28,52 +28,62 @@
#' }
get_mortality_surveillance_data <- function ( ) {
pg <- read_html ( " https://www.cdc.gov/flu/weekly/nchs.htm" )
# scrape (ugh) web page to get data file links for state mortality data
pg <- xml2 :: read_html ( " https://www.cdc.gov/flu/weekly/nchs.htm" )
PREFIX <- " https://www.cdc.gov"
xml_find_all ( pg , " . / / s e l e c t [ @ i d = ' S t a t e ' ] / o p t i o n [ c o n t a i n s ( @ v a l u e , ' c s v ' ) a n d
contains ( @ value , ' State_' ) ] " ) % > %
xml_attr ( " value" ) %>%
xml2 :: xml_find_all ( pg , " . / / s e l e c t [ @ i d = ' S t a t e ' ] / o p t i o n [ c o n t a i n s ( @ v a l u e , ' c s v ' ) a n d
contains ( @ value , ' State_' ) ] " ) % > %
xml2 :: xml_attr ( " value" ) %>%
sprintf ( " %s%s" , PREFIX , .) -> targets
pb <- progress_estimated ( length ( targets ) )
map_df ( targets , function ( x ) {
pb <- dplyr :: progress_estimated ( length ( targets ) )
purrr :: map_df ( targets , function ( x ) {
pb $ tick ( ) $ print ( )
suppressMessages ( read_csv ( URLencode ( x ) , col_types = " ciidii" ) )
} ) -> influenza_mortality_by_state
# scrape (ugh) web page to get data file links for regional mortality data
xml_find_all ( pg , " . / / s e l e c t [ @ i d = ' R e g i o n a l D a t a ' ] /
option [contains ( @ value , ' csv' ) and
not ( contains ( @ value , ' Week_' ) ) ] " ) % > %
xml_attr ( " value" ) %>%
xml2 :: xml_find_all ( pg , " . / / s e l e c t [ @ i d = ' R e g i o n a l D a t a ' ] /
option [contains ( @ value , ' csv' ) and
not ( contains ( @ value , ' Week_' ) ) ] " ) % > %
xml2 :: xml_attr ( " value" ) %>%
sprintf ( " %s%s" , PREFIX , .) -> targets
pb <- progress_estimated ( length ( targets ) )
map_df ( targets , function ( x ) {
pb <- dplyr :: progress_estimated ( length ( targets ) )
purrr :: map_df ( targets , function ( x ) {
pb $ tick ( ) $ print ( )
suppressMessages ( read_csv ( URLencode ( x ) , col_types = " ciidii" ) )
} ) -> influenza_mortality_by_region
# scrape (ugh) web page to get data file links for weekly mortality data
xml_find_all ( pg , " . / / s e l e c t [ @ i d = ' R e g i o n a l D a t a ' ] /
option [contains ( @ value , ' csv' ) and
contains ( @ value , ' Week_' ) ] " ) % > %
xml_attr ( " value" ) %>%
xml2 :: xml_find_all ( pg , " . / / s e l e c t [ @ i d = ' R e g i o n a l D a t a ' ] /
option [contains ( @ value , ' csv' ) and
contains ( @ value , ' Week_' ) ] " ) % > %
xml2 :: xml_attr ( " value" ) %>%
sprintf ( " %s%s" , PREFIX , .) -> targets
pb <- progress_estimated ( length ( targets ) )
map_df ( targets , function ( x ) {
pb <- dplyr :: progress_estimated ( length ( targets ) )
purrr :: map_df ( targets , function ( x ) {
pb $ tick ( ) $ print ( )
suppressMessages ( read_csv ( URLencode ( x ) , col_types = " ciidii" ) )
} ) -> influenza_mortality_by_week
# if return it all
list (
by_state = influenza_mortality_by_state ,
by_region = influenza_mortality_by_region ,
by_week = influenza_mortality_by_week
)
by_state = influenza_mortality_by_state ,
by_region = influenza_mortality_by_region ,
by_week = influenza_mortality_by_week
) -> out
class ( out ) <- c ( " cfv_mortality" , class ( out ) )
out
}