---
title: "Searchable Codebooks"
output: rmarkdown::html_vignette
vignette: >
  %\VignetteIndexEntry{Searchable Codebooks}
  %\VignetteEncoding{UTF-8}
  %\VignetteEngine{knitr::rmarkdown}
editor_options: 
  markdown: 
    wrap: 80
---

```{r, mesage=FALSE, warning=FALSE}
library(rfars)
library(dplyr)
library(stringr)
```

`rfars` comes pre-loaded with searchable codebooks, compiled from SAS format
files and the User Manuals (see: [FARS Analytical User's
Manual](https://crashstats.nhtsa.dot.gov/Api/Public/ViewPublication/813706) and
[CRSS Analytical User's
Manual](https://crashstats.nhtsa.dot.gov/Api/Public/ViewPublication/813707)).

Access the codebooks in RStudio with:

```{r, eval=F, echo=T}
View(rfars::fars_codebook)
View(rfars::gescrss_codebook)
```

It can be helpful to search the codebooks for certain concepts. The examples below
illustrate the content of the codebooks and how variables change over time.

Here we search for the word alcohol in any of the codebook fields, including the
names of tables, various versions of variable names, the definition, all value
labels, and additional information from the User Manual if present.

```{r, results='asis'}
cb <- rfars::fars_codebook %>% filter(if_any(everything(), ~ str_detect(., "alcohol"))) 

distinct(cb, source, file, name_ncsa, name_rfars, label, Definition, `Additional Information`) %>%
  knitr::kable(format = "html")
```

The `drinking` variable changed in a very minor way:
```{r, results='asis'}
filter(cb, name_rfars == "drinking") %>%
  distinct(name_rfars, value_label, `2014`, `2015`, `2016`, `2017`, `2018`, `2019`, `2020`, `2021`, `2022`, `2023`) %>%
  knitr::kable(format = "html")
```

But the variable for driver distraction changed names in 2020:
```{r, results='asis'}
filter(cb, name_rfars %in% c("mdrdstrd", "drdistract")) %>%
  distinct(name_rfars, value_label, `2014`, `2015`, `2016`, `2017`, `2018`, `2019`, `2020`, `2021`, `2022`, `2023`) %>%
  arrange(value_label, name_rfars) %>%
  knitr::kable(format = "html")
```

As another example, the `per_typ` variable has undergone more substantial changes over time.
```{r, results='asis'}
filter(rfars::fars_codebook, name_rfars == "per_typ") %>%
  distinct(name_rfars, value_label, `2014`, `2015`, `2016`, `2017`, `2018`, `2019`, `2020`, `2021`, `2022`, `2023`) %>%
  arrange(value_label, name_rfars) %>%
  knitr::kable(format = "html")
```

Users of rfars and FARS data in general are strongly encouraged to User Manuals
for further guidance.
