data-raw/data-city.R

source("data-raw/data-utils.R",
       encoding = "utf-8")

# data-city ---------------------------------------------------------------

int_merger <- ymd("1970-04-01") %--% today()
usethis::use_data(int_merger,
                  overwrite = TRUE)



# download-data
url_city <- "https://www.e-stat.go.jp/municipalities/cities/areacode"

download_city <- function(path, date) {
  dir_clean(path)

  driver <- selenium_driver(path)
  driver$get(url_city)

  date_year <- driver$find_element(By$XPATH, '//select[@name="date_year"]')
  date_year <- Select(date_year)
  date_year$select_by_value(as.character(year(date)))

  date_month <- driver$find_element(By$XPATH, '//select[@name="date_month"]')
  date_month <- Select(date_month)
  date_month$select_by_value(as.character(month(date)))

  date_day <- driver$find_element(By$XPATH, '//select[@name="date_day"]')
  date_day <- Select(date_day)
  date_day$select_by_value(as.character(day(date)))

  click_city_category(driver)
  click_submit_button(driver)
  click_download_button(driver)

  close_driver(driver, path)
}

download_city(path_city_raw_start,
              date_start(int_merger))
download_city(path_city_raw_end,
              date_end(int_merger))



# write-data --------------------------------------------------------------

read_city <- function(path) {
  col_types_city <- cols(`標準地域コード` = "c",
                         `都道府県` = "c",
                         `政令市・郡・支庁・振興局等` = "c",
                         `政令市・郡・支庁・振興局等(ふりがな)` = "c",
                         `市区町村` = "c",
                         `市区町村(ふりがな)` = "c",
                         `廃置分合等施行年月日` = "D",
                         `廃置分合等情報有無` = "c")

  col_names_city <- c(`標準地域コード` = "city_code",
                      `都道府県` = "pref_name",
                      `政令市・郡・支庁・振興局等` = "subpref_name",
                      `政令市・郡・支庁・振興局等(ふりがな)` = "subpref_name_kana",
                      `市区町村` = "city_name",
                      `市区町村(ふりがな)` = "city_name_kana",
                      `廃置分合等施行年月日` = "date_merger",
                      `廃置分合等情報有無` = "merged")

  dir_ls(path) |>
    read_csv(locale = locale(encoding = "shift-jis"),
             col_types = col_types_city) |>
    rename_with(~ col_names_city,
                names(col_names_city)) |>
    replace_na(list(merged = "")) |>
    mutate(merged = merged == "有")
}

city_start <- read_city(path_city_raw_start)
city_end <- read_city(path_city_raw_end)

write_rds(city_start, str_c(path_city, "city_start.rds", sep = "/"))
write_rds(city_end, str_c(path_city, "city_end.rds", sep = "/"))
UchidaMizuki/japancity documentation built on Nov. 21, 2022, 4:39 p.m.