Updated 2022 NPS Analysis
sheldon
nps
department of defense
vendors
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
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 |
|||
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 |