Skip to content

ruralinnovation/cori.data.fcc

Repository files navigation

cori.data.fcc

Codecov test coverage R-CMD-check

The goal of cori.data.fcc is to facilitate the discovery, analysis, and use of FCC public data releases.

The package provides access to data from the following sources:

Installation

You can install the development version of cori.data.fcc from GitHub with:

# install.packages("devtools")
devtools::install_github("ruralinnovation/cori.data.fcc")

::: {.callout-note} We were encountering problems with devtools::check() related to specific dependencies. Make sure to have the latest version of these packages:

  • waldo
  • duckdb :::

Examples

library(cori.data.fcc)

National Broadband Map

Key uses:

  • Access parquet files stored in a CORI s3 bucket, by county:
guilford_cty <- get_county_nbm_raw(geoid_co = "37081")
dplyr::glimpse(guilford_cty)
#> Rows: 1,337,541
#> Columns: 14
#> $ frn                           <chr> "0001857952", "0001857952", "0001857952"…
#> $ provider_id                   <chr> "130077", "130077", "130077", "130077", …
#> $ brand_name                    <chr> "AT&T", "AT&T", "AT&T", "AT&T", "AT&T", …
#> $ location_id                   <chr> "1344960789", "1344965855", "1344971572"…
#> $ technology                    <dbl> 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, …
#> $ max_advertised_download_speed <int> 10, 0, 10, 50, 50, 75, 50, 10, 50, 0, 10…
#> $ max_advertised_upload_speed   <int> 1, 0, 1, 10, 10, 20, 10, 1, 10, 0, 1, 5,…
#> $ low_latency                   <lgl> TRUE, TRUE, TRUE, TRUE, TRUE, TRUE, TRUE…
#> $ business_residential_code     <chr> "X", "X", "X", "X", "X", "X", "X", "X", …
#> $ state_usps                    <chr> "NC", "NC", "NC", "NC", "NC", "NC", "NC"…
#> $ geoid_bl                      <chr> "370810161022008", "370810168003003", "3…
#> $ geoid_co                      <chr> "37081", "37081", "37081", "37081", "370…
#> $ file_time_stamp               <date> 2024-09-03, 2024-09-03, 2024-09-03, 202…
#> $ release                       <date> 2023-12-01, 2023-12-01, 2023-12-01, 202…
  • Access a CORI-opinionated, Census-block level version of the latest NBM release:
# get a county
nbm_bl <- get_nbm_bl(geoid_co = "47051")
dplyr::glimpse(nbm_bl)
#> Rows: 2,146
#> Columns: 21
#> $ geoid_bl                                <chr> "470519601001000", "4705196010…
#> $ geoid_st                                <chr> "47", "47", "47", "47", "47", …
#> $ geoid_co                                <chr> "47051", "47051", "47051", "47…
#> $ state_abbr                              <chr> "TN", "TN", "TN", "TN", "TN", …
#> $ cnt_total_locations                     <int> NA, NA, NA, NA, 8, NA, 8, 3, 1…
#> $ cnt_bead_locations                      <int> NA, NA, NA, NA, 0, NA, 0, 0, 0…
#> $ cnt_copper_locations                    <int> NA, NA, NA, NA, 0, NA, 0, 0, 0…
#> $ cnt_cable_locations                     <int> NA, NA, NA, NA, 0, NA, 0, 0, 0…
#> $ cnt_fiber_locations                     <int> NA, NA, NA, NA, 0, NA, 0, 0, 0…
#> $ cnt_other_locations                     <int> NA, NA, NA, NA, 0, NA, 0, 0, 0…
#> $ cnt_unlicensed_fixed_wireless_locations <int> NA, NA, NA, NA, 7, NA, 8, 3, 1…
#> $ cnt_licensed_fixed_wireless_locations   <int> NA, NA, NA, NA, 0, NA, 0, 0, 0…
#> $ cnt_LBR_fixed_wireless_locations        <int> NA, NA, NA, NA, 0, NA, 0, 0, 0…
#> $ cnt_terrestrial_locations               <int> NA, NA, NA, NA, 0, NA, 0, 0, 0…
#> $ cnt_25_3                                <int> NA, NA, NA, NA, 0, NA, 0, 0, 0…
#> $ cnt_100_20                              <int> NA, NA, NA, NA, 0, NA, 0, 0, 0…
#> $ cnt_100_100                             <int> NA, NA, NA, NA, 0, NA, 0, 0, 0…
#> $ cnt_distcint_frn                        <int> NA, NA, NA, NA, NA, NA, NA, NA…
#> $ array_frn                               <list> <NULL>, <NULL>, <NULL>, <NULL…
#> $ combo_frn                               <dbl> NA, NA, NA, NA, NA, NA, NA, NA…
#> $ release                                 <date> 2023-12-01, 2023-12-01, 2023-…

# get census block covered by an ISP identified by their FRN
skymesh <- get_frn_nbm_bl("0027136753")
dplyr::glimpse(skymesh)
#> Rows: 3
#> Columns: 21
#> $ geoid_bl                                <chr> "390375301004009", "3903755510…
#> $ geoid_st                                <chr> "39", "39", "39"
#> $ geoid_co                                <chr> "39037", "39037", "39109"
#> $ state_abbr                              <chr> "OH", "OH", "OH"
#> $ cnt_total_locations                     <int> 13, 7, 15
#> $ cnt_bead_locations                      <int> 13, 6, 15
#> $ cnt_copper_locations                    <int> 9, 2, 10
#> $ cnt_cable_locations                     <int> 10, 0, 0
#> $ cnt_fiber_locations                     <int> 13, 5, 2
#> $ cnt_other_locations                     <int> 0, 0, 0
#> $ cnt_unlicensed_fixed_wireless_locations <int> 13, 7, 15
#> $ cnt_licensed_fixed_wireless_locations   <int> 13, 6, 14
#> $ cnt_LBR_fixed_wireless_locations        <int> 11, 0, 0
#> $ cnt_terrestrial_locations               <int> 13, 6, 15
#> $ cnt_25_3                                <int> 13, 6, 14
#> $ cnt_100_20                              <int> 13, 5, 14
#> $ cnt_100_100                             <int> 13, 5, 5
#> $ cnt_distcint_frn                        <int> 9, 6, 8
#> $ array_frn                               <list> <"0002930980", "0004328688", "…
#> $ combo_frn                               <dbl> 1.241130e+19, 7.392885e+18, 6.…
#> $ release                                 <date> 2023-12-01, 2023-12-01, 2023-1…

Form 477

Access state data for multiple years:

f477_vt <- get_f477("VT")
dplyr::glimpse(f477_vt)
#> Rows: 1,147,267
#> Columns: 15
#> $ Provider_Id        <chr> "9395", "9395", "9395", "9395", "9395", "9395", "93…
#> $ FRN                <chr> "0021002092", "0021002092", "0021002092", "00210020…
#> $ ProviderName       <chr> "Stowe Cablevision, Inc.", "Stowe Cablevision, Inc.…
#> $ DBAName            <chr> "Stowe Access, LLC", "Stowe Access, LLC", "Stowe Ac…
#> $ HoldingCompanyName <chr> "Stowe Cablevision, Inc.", "Stowe Cablevision, Inc.…
#> $ HocoNum            <chr> "240090", "240090", "240090", "240090", "240090", "…
#> $ HocoFinal          <chr> "Stowe Cablevision, Inc.", "Stowe Cablevision, Inc.…
#> $ StateAbbr          <chr> "VT", "VT", "VT", "VT", "VT", "VT", "VT", "VT", "VT…
#> $ BlockCode          <chr> "500159531001026", "500159531001026", "500159531001…
#> $ TechCode           <chr> "42", "41", "50", "42", "41", "50", "42", "41", "50…
#> $ Consumer           <lgl> TRUE, TRUE, FALSE, TRUE, TRUE, FALSE, TRUE, TRUE, F…
#> $ MaxAdDown          <int> 25, 25, 0, 25, 25, 0, 25, 25, 0, 25, 25, 0, 25, 25,…
#> $ MaxAdUp            <int> 5, 5, 0, 5, 5, 0, 5, 5, 0, 5, 5, 0, 5, 5, 0, 5, 5, …
#> $ Business           <lgl> TRUE, TRUE, TRUE, TRUE, TRUE, TRUE, TRUE, TRUE, TRU…
#> $ Date               <dttm> 2014-12-01, 2014-12-01, 2014-12-01, 2014-12-01, 20…

Utilities

Access the dictionary for each dataset:

dplyr::glimpse(get_fcc_dictionary())
#> Rows: 50
#> Columns: 5
#> $ dataset         <chr> "f477", "f477", "f477", "f477", "f477", "f477", "f477"…
#> $ var_name        <chr> "Provider_Id", "FRN", "ProviderName", "DBAName", "Hold…
#> $ var_type        <chr> "TEXT", "TEXT", "VARCHAR", "VARCHAR", "VARCHAR", "TEXT…
#> $ var_description <chr> "filing number (assigned by FCC)", "FCC registration n…
#> $ var_example     <chr> "8026", "0001570936", "Arctic Slope Telephone Associat…

The package also provides a list of Provider IDs and FRNs.

str(fcc_provider)
#> 'data.frame':    4456 obs. of  5 variables:
#>  $ provider_name : chr  "@Link Services, LLC" "1 Point Communications" "101Netlink" "123.Net, Inc" ...
#>  $ affiliation   : chr  "AtLink Services, LLC" "1 Point Communications" "101Netlink" "123.Net, Inc." ...
#>  $ operation_type: chr  "Non-ILEC" "Non-ILEC" "Non-ILEC" "Non-ILEC" ...
#>  $ frn           : chr  "0016085920" "0021352968" "0018247254" "0008590846" ...
#>  $ provider_id   : num  290004 270002 190002 460000 490000 ...

Inspiration

This package was inspired by https://github.com/bbcommons/bfm-explorer

Footnotes

  1. This data describes what internet services are available to individual locations across the country, along with new maps of mobile coverage, as reported by Internet Service Providers (ISPs). It is part of the FCC’s ongoing Broadband Data Collection).

About

A collection of functions to work with FCC data

Topics

Resources

License

Unknown, MIT licenses found

Licenses found

Unknown
LICENSE
MIT
LICENSE.md

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Contributors 4

  •  
  •  
  •  
  •