Skip to contents

Titles often carry a temporal/temporary qualifier — FORMER, INTERIM, FUTURE, EX OFFICIO, and so on. gen_status_codes() detects each qualifier, adds a boolean flag, and either removes it or standardizes it in place.

gen_status_codes()
|
+- flag_and_remove()   flag SCODE.X and delete the qualifier (FORMER, INTERIM, FUTURE, ...)
+- flag_and_keep()     flag SCODE.X but keep a standardized form (EXOFFICIO, REGIONAL)
+- get_variants()      collapse a status code's variants into one regex

The variant-to-code mapping comes from the bundled status-code crosswalk (see the Dictionaries article). Some qualifiers (EX OFFICIO, REGIONAL) are kept because they change the meaning of the role.

Examples

sc <- get_googlesheets_status_codes()

# all variants that map to FORMER, as a single regex
get_variants("FORMER", sc)
#> [1] "\\bCEASED\\b|\\bDECEASED\\b|\\bEMERITUS\\b|\\bFORMER\\b|\\bFRMR\\b|\\bIMMED PAST\\b|\\bIMMEDIATE\\b|\\bIMMEDIATE PA\\b|\\bIMMEDIATE PAST\\b|\\bPAST\\b|\\bIMMED PAST\\b|\\bPREVIOUS\\b|\\bPRIOR\\b|\\bRETIRED\\b"

x <- c("IMMEDIATE PAST CHAIR", "OUTGOING CEO", "ACTING DIRECTOR", "TREASURER")
remove_status(x, get_variants("FORMER",  sc))
#> [1] " CHAIR"          "OUTGOING CEO"    "ACTING DIRECTOR" "TREASURER"
remove_status(x, get_variants("INTERIM", sc))
#> [1] "IMMEDIATE PAST CHAIR" "OUTGOING CEO"         " DIRECTOR"           
#> [4] "TREASURER"

In the pipeline

library(dplyr)
data(tinypartvii)
set.seed(6)
d <- dplyr::sample_n(tinypartvii, 150)

df <- d |>
  standardize_df() |> remove_dates() |> standardize_conj() |>
  split_titles() |> standardize_spelling() |> gen_status_codes()
#> [OK] standardize df step complete
#> [OK] remove dates step complete
#> [OK] standardize conjunctions step complete
#> [OK] split titles step complete
#> [OK] standardize spelling step complete
#> [OK] generate status codes step complete

df |>
  dplyr::filter(FORMER.X == 1 | INTERIM.X == 1) |>
  dplyr::select(TitleTxt5, TitleTxt6, FORMER.X, INTERIM.X) |>
  head(8)
#> # A tibble: 2 × 5
#> # Groups:   PERSONID [2]
#>   PERSONID                             TitleTxt5    TitleTxt6 FORMER.X INTERIM.X
#>   <chr>                                <chr>        <chr>        <int>     <int>
#> 1 PID-d6228412b6df9a30d2e676db3f1d72b5 PAST CHAIR   CHAIR            1         0
#> 2 PID-797bf2fcdff99e605d47b1272a93085a EXECUTIVE C… EXECUTIV…        1         0

Input: TitleTxt5. Output: TitleTxt6 plus status flags (FORMER.X, INTERIM.X, FUTURE.X, EXOFFICIO.X, REGIONAL.X, …). Continue with step 07.