SHELDON
  • Insights
  • About

Table of contents

  • FPDS Analysis
    • New Vendors by Year Since 1980

Updated 2022 NPS Analysis

sheldon
nps
department of defense
vendors
Author

Alex Bresler

Published

May 16, 2022

Abstract
Updating some of the 2020 NPS analysis metrics.

This is a quick update to some of the analysis from the 2020 NPS Paper of the Defense Industrial Base

Code
library(asbtools)
library(sheldon)
library(tidyverse)
library(gt)

FPDS Analysis

Looking for all the distinct DUNS from DOD funded and awarded procourements and some important metrics
fpds <-
  arrow_fpds()

dod <- fpds |>
  filter(!is.na(id_duns), id_duns != 0) |>
  filter(
    name_department_award |>   str_detect("DEFENSE") |
      name_department_funding |>  str_detect("DEFENSE")
  )

df_all_dod <-
   dod |>
  tbl_arrow_summarise(
    group_variables = "id_duns",
    amount_variables = c("amount_obligation"),
    min_variables = c("date_obligation", "year_fiscal"),
    max_variables = c("date_obligation", "year_fiscal"),
    distinct_variables = "id_contract_analysis",
    append_slug = "dod_funded_or_awarded"
  )


df_names <-
  fpds |>
  filter(!is.na(id_duns), id_duns != 0) |>
  filter(
    name_department_award |>   str_detect("DEFENSE") |
      name_department_funding |>  str_detect("DEFENSE")
  ) |>
  filter(!is.na(name_vendor)) |>
  tbl_arrow_summarise(
    group_variables = "id_duns",
    amount_variables = c("amount_obligation"),
    top_variables = c("name_vendor"),
    append_slug = "dod_funded_or_awarded"
  ) |>
  select(id_duns, name_vendor = name_vendor_top_dod_funded_or_awarded)

df_all_dod <- df_all_dod |>
  left_join(df_names, by = "id_duns") |>
  select(id_duns, name_vendor, everything())

New Vendors by Year Since 1980

Lets take a look at this.

Code
df_all_dod |>
  count(year_fiscal = year_fiscal_min_dod_funded_or_awarded, name = "count_new_dod_funded_award_duns") |>
  filter(year_fiscal |> between(1981, 2021)) |>
  asbviz::hc_xy(
    x = "year_fiscal",
    y = "count_new_dod_funded_award_duns",
    type = "line",
    override_x_text  = list(text = ""),
    override_y_text  = list(text = "# New DUNS"),
    title = "Annual New Vendors",
    subtitle = "Department of Defense Funded/Award Procurement",
    fits = c("loess"),
    theme_name = "clean_unica",
    roll_periods = c(5),
    transformations = "mean_y",
    return_message = F,
    show_colors = F
  )

Now lets look at a GT table of the key metrics since 2005.

Code
df_all_dod |>
    count(year_fiscal = year_fiscal_min_dod_funded_or_awarded, name = "count_new_dod_funded_award_duns") |>
    filter(year_fiscal |>
        between(2005, 2021)) |>
    asbtools::tbl_mutate(index_columns = "count_new_dod_funded_award_duns", index_calculation_variable = "year_fiscal",
        absolute_change_columns = "count_new_dod_funded_award_duns") |>
    rename(count_duns_change = count_new_dod_funded_award_duns_absolute_change, index_2005_duns = index_year_fiscal_2005_count_new_dod_funded_award_duns) |>
    govtrackR::munge_data() |>
    rename(`Fiscal Year` = year_fiscal, `New DUNS` = count_new_dod_funded_award_duns,
        `YoY Change in New DUNS` = count_duns_change, `Index of 2005 New DUNS` = index_2005_duns) |>
    gt::gt() |>
    tab_header(title = md("**Department of Defense Awarded/Funded Procurement New Vendors (2005-2021)**"),
        subtitle = html("Data from <strong><red>SHELDON</red></strong> via <em><b>FPDS<b></em>"))
Department of Defense Awarded/Funded Procurement New Vendors (2005-2021)
Data from SHELDON via FPDS
Fiscal Year New DUNS YoY Change in New DUNS Index of 2005 New DUNS
2005 27,332 NA 100.00000
2006 19,645 -7,687 71.87546
2007 18,149 -1,496 66.40202
2008 17,218 -931 62.99576
2009 16,645 -573 60.89931
2010 15,119 -1,526 55.31611
2011 13,126 -1,993 48.02429
2012 10,601 -2,525 38.78604
2013 7,907 -2,694 28.92946
2014 8,290 383 30.33075
2015 7,972 -318 29.16728
2016 7,626 -346 27.90136
2017 7,117 -509 26.03908
2018 6,566 -551 24.02312
2019 5,833 -733 21.34128
2020 5,768 -65 21.10347
2021 5,164 -604 18.89360

Reuse

https://creativecommons.org/licenses/by/4.0/