Step 03 - Standardize conjunctions
Source:vignettes/step-03-standardize-conj.Rmd
step-03-standardize-conj.RmdPeople list several roles in one title with no standard punctuation: “CEO AND BOARD PRESIDENT”, “SEC/TREAS”, “BOARD MEMBER; TREASURER”. Other titles use the same words inside a single role: “VP OF FINANCE AND ADMINISTRATION”. standardize_conj() turns every connector that separates two titles into a single &, so that step 04 can split on it, and leaves compound titles whole.
Before and after
| before (TitleTxt2) | after (TitleTxt3) |
|---|---|
| SEC/TREAS | SEC & TREAS |
| SECRETARY, TREASURER | SECRETARY & TREASURER |
| BOARD MEMBER; TREASURER | BOARD MEMBER & TREASURER |
| CHIEF EXEC OFFICER / FOUNDER | CHIEF EXEC OFFICER & FOUNDER |
| PRESIDENT AND CEO | PRESIDENT & CEO |
| VP FINANCE AND ADMINISTRATION | VP FINANCE AND ADMINISTRATION |
| SVP, MARKETING | SVP OF MARKETING |
| VP, MARKETING | VP OF MARKETING |
| CHAIRMAN OF THE BOARD | CHAIRMAN OF BOARD |
| DIRECTOR TO | DIRECTOR UNTIL |
| TRUSTEE, EX-OFFICIO | TRUSTEE EX-OFFICIO |
| MGR, IT | MGR IT |
What it does
standardize_conj()
|
+- standardize_and() AND -> & when both sides are titles
+- standardize_to() a trailing TO -> UNTIL (left by a removed date)
+- standardize_of() AS OF -> SINCE; drop a dangling OF; FOR -> OF
+- standardize_comma() a comma as separator, as "of", or as filler
+- standardize_slash() a slash as separator, as "of", or as filler
+- standardize_and() again, for cases the steps above created
+- standardize_separator() ";" and "\" -> &
The decision for AND, a comma or a slash is the same: if the words on both sides are recognizable titles, the connector separates two roles and becomes &. If the words after it are a subject (FINANCE, MARKETING), it means “of”. Otherwise it is dropped.
Assets
| Asset | Type | Used for | Load it with |
|---|---|---|---|
likely.titles |
word list (package data) | titles that, found on both sides of a connector, make it a separator | data(likely.titles) |
data(likely.titles)
length(likely.titles)
#> [1] 50
head(likely.titles, 20)
#> [1] "PRESIDENT" "CEO" "DIRECTOR\\b" "CHAIR"
#> [5] "TRUSTEE\\b" "TREASURER" "SECRETARY" "OFFICER"
#> [9] "COUNSEL" "FOUNDER" "PUBLISHER" "EDITOR\\b"
#> [13] "MEMBER\\b" "\\bCOO\\b" "CFO" "MANAGER"
#> [17] "\\bCTO\\b" "ADMINISTRATOR" "\\bCRO\\b" "CURATOR"Try it
standardize_and("CEO AND BOARD PRESIDENT") # separator -> &
#> [1] "CEO & BOARD PRESIDENT"
standardize_and("VP OF FINANCE AND ADMINISTRATION") # compound -> unchanged
#> [1] "VP OF FINANCE AND ADMINISTRATION"
standardize_comma("SECRETARY, TREASURER") # separator
#> [1] "SECRETARY & TREASURER"
standardize_comma("VP, MARKETING") # "of"
#> [1] "VP OF MARKETING"
standardize_slash("SECRETARY/TREASURER") # separator
#> [1] "SECRETARY & TREASURER"
standardize_to("DIRECTOR TO") # -> DIRECTOR UNTIL
#> [1] "DIRECTOR UNTIL"
standardize_of("VICE PRESIDENT AS OF") # -> VICE PRESIDENT SINCE
#> [1] "VICE PRESIDENT SINCE"Input: TitleTxt2. Output: TitleTxt3, with & as the only separator between titles. Continue with step 04.