Introduction

This vignette is intended to introduce the user to fredr functions for the Categories endpoint of the FRED API.

FRED series are assigned categories. Each FRED category is assigned an integer identifier. For example:

  • “Population, Employment, & Labor Markets” (category_id = 10)
  • “National Accounts” (category_id = 32992)
  • “Production & Business Activity” (category_id = 1)
  • “Housing” (category_id = 97)

Categories are organized in a hierarchical structure where parent categories contain children categories. All categories are children of the root category (category_id = 0). The following examples illustrate usage of the Categories endpoint functions in fredr.

Get a FRED category

fredr_category() returns minimal information for a single category specified by category_id. The data returned is a tibble in which each row represents a category.

fredr_category(category_id = 0L) 
#> # A tibble: 1 × 3
#>      id name       parent_id
#>   <int> <chr>          <int>
#> 1     0 Categories         0
fredr_category(category_id = 97L)
#> # A tibble: 1 × 3
#>      id name    parent_id
#>   <int> <chr>       <int>
#> 1    97 Housing         1

Get the children of a FRED category

fredr_category_children() returns minimal information (child ID, name, and parent ID) for all child categories of the parent category specified by category_id. The data returned is a tibble in which each row represents child category of the parent specified.

fredr_category_children(category_id = 0L)
#> # A tibble: 8 × 3
#>      id name                                    parent_id
#>   <int> <chr>                                       <int>
#> 1 32991 Money, Banking, & Finance                       0
#> 2    10 Population, Employment, & Labor Markets         0
#> 3 32992 National Accounts                               0
#> 4     1 Production & Business Activity                  0
#> 5 32455 Prices                                          0
#> 6 32263 International Data                              0
#> 7  3008 U.S. Regional Data                              0
#> 8 33060 Academic Data                                   0
fredr_category_children(category_id = 1L)
#> # A tibble: 16 × 3
#>       id name                                         parent_id
#>    <int> <chr>                                            <int>
#>  1 32262 Business Cycle Expansions & Contractions             1
#>  2 33936 Business Surveys                                     1
#>  3 32436 Construction                                         1
#>  4 33940 Emissions                                            1
#>  5 33955 Expenditures                                         1
#>  6 33490 Finance Companies                                    1
#>  7 32216 Health Insurance                                     1
#>  8    97 Housing                                              1
#>  9     3 Industrial Production & Capacity Utilization         1
#> 10 32429 Manufacturing                                        1
#> 11 33959 Patents                                              1
#> 12     6 Retail Trade                                         1
#> 13 33441 Services                                             1
#> 14 33492 Technology                                           1
#> 15 33202 Transportation                                       1
#> 16 33203 Wholesale Trade                                      1

fredr_category_related() returns minimal information (ID, name, and parent ID) for all related categories to the category specified by category_id. The data returned is a tibble in which each row represents category related to the one specified. Note that not all categories have related categories.

# Nothing related to the root
fredr_category_related(category_id = 0L)
#> # A tibble: 0 × 0
# What is related to the Employment Cost Index category?
fredr_category_related(category_id = 4L)
#> # A tibble: 1 × 3
#>      id name                                    parent_id
#>   <int> <chr>                                       <int>
#> 1    10 Population, Employment, & Labor Markets         0

Get series in a category

fredr_category_series() returns detailed information for the FRED series belonging to the category specified by category_id. The data returned is a tibble in which each row represents a series belonging to the category specified. For example, to get the top 100 quarterly series in the “Housing” category, ordering the results so that the most recently updated series appear first:

fredr_category_series(
  category_id = 97L, # Housing
  limit = 100L,
  order_by = "last_updated",
  filter_variable = "frequency",
  filter_value = "Quarterly"
)
#> # A tibble: 30 × 16
#>    id        realtime_start realtime_end title observation_start observation_end
#>    <chr>     <chr>          <chr>        <chr> <chr>             <chr>          
#>  1 ANHPIHOR… 2023-04-17     2023-04-17   Home… 2016-01-01        2022-10-01     
#>  2 AORHORUS… 2023-04-17     2023-04-17   Home… 1994-01-01        2022-10-01     
#>  3 BOAAAHOR… 2023-04-17     2023-04-17   Home… 1994-01-01        2022-10-01     
#>  4 HOLHORUS… 2023-04-17     2023-04-17   Home… 1994-01-01        2022-10-01     
#>  5 NHWAHORU… 2023-04-17     2023-04-17   Home… 1994-01-01        2022-10-01     
#>  6 RHORUSQ1… 2023-04-17     2023-04-17   Home… 1965-01-01        2022-10-01     
#>  7 RRVRUSQ1… 2023-04-17     2023-04-17   Rent… 1956-01-01        2022-10-01     
#>  8 ETOTALUS… 2023-04-17     2023-04-17   Hous… 2000-04-01        2022-10-01     
#>  9 EVACANTU… 2023-04-17     2023-04-17   Hous… 2000-04-01        2022-10-01     
#> 10 EOWNOCCU… 2023-04-17     2023-04-17   Hous… 2000-04-01        2022-10-01     
#> # ℹ 20 more rows
#> # ℹ 10 more variables: frequency <chr>, frequency_short <chr>, units <chr>,
#> #   units_short <chr>, seasonal_adjustment <chr>,
#> #   seasonal_adjustment_short <chr>, last_updated <chr>, popularity <int>,
#> #   group_popularity <int>, notes <chr>

To return all series in the “National Accounts” category tagged with "usa" and not "gnp", ordering the results such that higher frequency series appear first:

fredr_category_series(
  category_id = 32992L, # National Accounts
  order_by = "frequency",
  sort_order = "desc",
  tag_names = "usa",
  exclude_tag_names = "gnp"
)
#> # A tibble: 4 × 16
#>   id         realtime_start realtime_end title observation_start observation_end
#>   <chr>      <chr>          <chr>        <chr> <chr>             <chr>          
#> 1 RGMPUSMP   2023-04-17     2023-04-17   Tota… 2001-01-01        2021-01-01     
#> 2 NGMPUSMP   2023-04-17     2023-04-17   Tota… 2001-01-01        2021-01-01     
#> 3 PCRGMPUSMP 2023-04-17     2023-04-17   Tota… 2001-01-01        2017-01-01     
#> 4 QGMPUSMP   2023-04-17     2023-04-17   Tota… 2001-01-01        2021-01-01     
#> # ℹ 10 more variables: frequency <chr>, frequency_short <chr>, units <chr>,
#> #   units_short <chr>, seasonal_adjustment <chr>,
#> #   seasonal_adjustment_short <chr>, last_updated <chr>, popularity <int>,
#> #   group_popularity <int>, notes <chr>

Get tags within a FRED category

fredr_category_tags() returns information for the FRED tags assigned to series in the category specified by category_id. The data returned is a tibble in which each row represents a tag assigned to a series in the category specified. For example, to get all “source” tags belonging to series in the “Retail Trade” category:

fredr_category_tags(
  category_id = 6L,
  tag_group_id = "src"
)
#> # A tibble: 3 × 6
#>   name    group_id notes                       created   popularity series_count
#>   <chr>   <chr>    <chr>                       <chr>          <int>        <int>
#> 1 census  src      Census                      2012-02-…         79          388
#> 2 bea     src      Bureau of Economic Analysis 2012-02-…         78            6
#> 3 frb stl src      St. Louis Fed               2012-02-…         68            6

To search for tags with the words "usa" in the “Production & Business Activity” category, ordering the results by popularity:

fredr_category_tags(
  category_id = 1L,
  search_text = "usa",
  order_by = "popularity",
  sort_order = "desc"
)
#> # A tibble: 1 × 6
#>   name  group_id notes                    created        popularity series_count
#>   <chr> <chr>    <chr>                    <chr>               <int>        <int>
#> 1 usa   geo      United States of America 2012-02-27 10…        100         3314

fredr_category_related_tags() returns a set of FRED tags assigned to series in the category specified by category_id that are related to the tags specified in the tag_names parameter. The data returned is a tibble in which each row represents a tag related to a tag assigned to a series in the specified category. For example, to get all tags except "rate" in the “Retail Trade” category related to the tags "business" and "monthly", ordering the results alphabetically:

fredr_category_related_tags(
  category_id = 1L,
  tag_names = "business;monthly",
  exclude_tag_names = "rate",
  order_by = "name"
)
#> # A tibble: 107 × 6
#>    name                  group_id notes      created     popularity series_count
#>    <chr>                 <chr>    <chr>      <chr>            <int>        <int>
#>  1 accommodation         gen      ""         2012-02-27…         31           20
#>  2 administrative        gen      ""         2012-02-27…         23           20
#>  3 agriculture           gen      ""         2012-02-27…         50           30
#>  4 ak                    geo      "Alaska"   2012-02-27…         36           16
#>  5 al                    geo      "Alabama"  2012-02-27…         45           22
#>  6 ar                    geo      "Arkansas" 2012-02-27…         41           12
#>  7 arts                  gen      ""         2012-02-27…         28           20
#>  8 average               gen      ""         2015-05-06…         53          166
#>  9 az                    geo      "Arizona"  2012-02-27…         48           18
#> 10 business applications gen       NA        2019-03-19…         33          784
#> # ℹ 97 more rows