Import your data

data <- read_csv("../00_data/Salaries.csv")
## Rows: 397 Columns: 6
## ── Column specification ────────────────────────────────────────────────────────
## Delimiter: ","
## chr (3): rank, discipline, sex
## dbl (3): yrs.since.phd, yrs.service, salary
## 
## ℹ Use `spec()` to retrieve the full column specification for this data.
## ℹ Specify the column types or set `show_col_types = FALSE` to quiet this message.

Chapter 14

Tools

Detect matches

data$rank
##   [1] "Prof"      "Prof"      "AsstProf"  "Prof"      "Prof"      "AssocProf"
##   [7] "Prof"      "Prof"      "Prof"      "Prof"      "AssocProf" "AsstProf" 
##  [13] "AsstProf"  "AsstProf"  "Prof"      "Prof"      "Prof"      "Prof"     
##  [19] "Prof"      "Prof"      "Prof"      "Prof"      "Prof"      "Prof"     
##  [25] "AssocProf" "Prof"      "Prof"      "AsstProf"  "AsstProf"  "Prof"     
##  [31] "Prof"      "AsstProf"  "Prof"      "AsstProf"  "AsstProf"  "AsstProf" 
##  [37] "Prof"      "AsstProf"  "Prof"      "AssocProf" "Prof"      "AssocProf"
##  [43] "Prof"      "Prof"      "Prof"      "Prof"      "Prof"      "Prof"     
##  [49] "Prof"      "AsstProf"  "Prof"      "Prof"      "AsstProf"  "Prof"     
##  [55] "AssocProf" "AssocProf" "Prof"      "AssocProf" "AssocProf" "AsstProf" 
##  [61] "AssocProf" "AsstProf"  "Prof"      "AssocProf" "AsstProf"  "AssocProf"
##  [67] "Prof"      "Prof"      "Prof"      "Prof"      "Prof"      "Prof"     
##  [73] "Prof"      "Prof"      "Prof"      "AsstProf"  "Prof"      "Prof"     
##  [79] "AsstProf"  "AsstProf"  "Prof"      "Prof"      "Prof"      "AsstProf" 
##  [85] "Prof"      "Prof"      "Prof"      "AsstProf"  "Prof"      "AssocProf"
##  [91] "AsstProf"  "AssocProf" "AssocProf" "Prof"      "Prof"      "AsstProf" 
##  [97] "AssocProf" "Prof"      "Prof"      "Prof"      "Prof"      "Prof"     
## [103] "Prof"      "Prof"      "AssocProf" "Prof"      "AssocProf" "AssocProf"
## [109] "AssocProf" "Prof"      "Prof"      "AssocProf" "AsstProf"  "Prof"     
## [115] "Prof"      "Prof"      "Prof"      "Prof"      "AsstProf"  "AsstProf" 
## [121] "Prof"      "Prof"      "Prof"      "AssocProf" "Prof"      "Prof"     
## [127] "Prof"      "AsstProf"  "Prof"      "AsstProf"  "AssocProf" "Prof"     
## [133] "AssocProf" "AsstProf"  "Prof"      "Prof"      "Prof"      "Prof"     
## [139] "AssocProf" "Prof"      "AssocProf" "AssocProf" "Prof"      "AsstProf" 
## [145] "Prof"      "Prof"      "AsstProf"  "Prof"      "Prof"      "AsstProf" 
## [151] "Prof"      "AsstProf"  "Prof"      "AssocProf" "AsstProf"  "Prof"     
## [157] "AssocProf" "AsstProf"  "AssocProf" "Prof"      "AsstProf"  "Prof"     
## [163] "AssocProf" "AsstProf"  "AsstProf"  "Prof"      "Prof"      "Prof"     
## [169] "AssocProf" "Prof"      "AsstProf"  "Prof"      "Prof"      "Prof"     
## [175] "AssocProf" "Prof"      "AssocProf" "AssocProf" "Prof"      "AsstProf" 
## [181] "Prof"      "Prof"      "AssocProf" "Prof"      "Prof"      "Prof"     
## [187] "AssocProf" "Prof"      "AssocProf" "Prof"      "Prof"      "Prof"     
## [193] "Prof"      "AssocProf" "AssocProf" "AssocProf" "AsstProf"  "AsstProf" 
## [199] "Prof"      "Prof"      "AsstProf"  "Prof"      "Prof"      "Prof"     
## [205] "Prof"      "Prof"      "Prof"      "Prof"      "AsstProf"  "Prof"     
## [211] "AsstProf"  "Prof"      "Prof"      "Prof"      "AssocProf" "Prof"     
## [217] "Prof"      "AssocProf" "AssocProf" "Prof"      "Prof"      "Prof"     
## [223] "AssocProf" "Prof"      "Prof"      "Prof"      "AsstProf"  "AssocProf"
## [229] "Prof"      "Prof"      "Prof"      "AssocProf" "Prof"      "Prof"     
## [235] "AsstProf"  "Prof"      "Prof"      "AsstProf"  "Prof"      "Prof"     
## [241] "AsstProf"  "Prof"      "Prof"      "Prof"      "Prof"      "Prof"     
## [247] "Prof"      "Prof"      "Prof"      "Prof"      "Prof"      "Prof"     
## [253] "Prof"      "AsstProf"  "Prof"      "AssocProf" "Prof"      "AssocProf"
## [259] "AsstProf"  "Prof"      "AssocProf" "Prof"      "Prof"      "Prof"     
## [265] "Prof"      "Prof"      "Prof"      "Prof"      "Prof"      "Prof"     
## [271] "Prof"      "Prof"      "AsstProf"  "AsstProf"  "AsstProf"  "Prof"     
## [277] "Prof"      "Prof"      "Prof"      "Prof"      "Prof"      "Prof"     
## [283] "Prof"      "Prof"      "AssocProf" "AssocProf" "Prof"      "AsstProf" 
## [289] "Prof"      "AsstProf"  "Prof"      "Prof"      "Prof"      "AssocProf"
## [295] "Prof"      "Prof"      "Prof"      "Prof"      "Prof"      "AssocProf"
## [301] "Prof"      "Prof"      "Prof"      "Prof"      "Prof"      "Prof"     
## [307] "AsstProf"  "Prof"      "AsstProf"  "Prof"      "Prof"      "Prof"     
## [313] "Prof"      "Prof"      "Prof"      "AsstProf"  "AssocProf" "Prof"     
## [319] "Prof"      "Prof"      "Prof"      "AssocProf" "AssocProf" "Prof"     
## [325] "Prof"      "AsstProf"  "Prof"      "Prof"      "AssocProf" "Prof"     
## [331] "Prof"      "Prof"      "Prof"      "Prof"      "AssocProf" "Prof"     
## [337] "Prof"      "Prof"      "Prof"      "Prof"      "Prof"      "Prof"     
## [343] "Prof"      "Prof"      "Prof"      "Prof"      "Prof"      "Prof"     
## [349] "AsstProf"  "Prof"      "Prof"      "Prof"      "Prof"      "Prof"     
## [355] "AsstProf"  "Prof"      "Prof"      "Prof"      "Prof"      "AsstProf" 
## [361] "Prof"      "Prof"      "Prof"      "AssocProf" "Prof"      "Prof"     
## [367] "Prof"      "AssocProf" "Prof"      "Prof"      "AssocProf" "Prof"     
## [373] "Prof"      "Prof"      "Prof"      "Prof"      "AsstProf"  "AsstProf" 
## [379] "Prof"      "AssocProf" "AsstProf"  "Prof"      "AssocProf" "Prof"     
## [385] "Prof"      "Prof"      "Prof"      "Prof"      "Prof"      "Prof"     
## [391] "Prof"      "Prof"      "Prof"      "Prof"      "Prof"      "Prof"     
## [397] "AsstProf"
str_detect(data$rank,"AsstProf")
##   [1] FALSE FALSE  TRUE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE  TRUE
##  [13]  TRUE  TRUE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE
##  [25] FALSE FALSE FALSE  TRUE  TRUE FALSE FALSE  TRUE FALSE  TRUE  TRUE  TRUE
##  [37] FALSE  TRUE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE
##  [49] FALSE  TRUE FALSE FALSE  TRUE FALSE FALSE FALSE FALSE FALSE FALSE  TRUE
##  [61] FALSE  TRUE FALSE FALSE  TRUE FALSE FALSE FALSE FALSE FALSE FALSE FALSE
##  [73] FALSE FALSE FALSE  TRUE FALSE FALSE  TRUE  TRUE FALSE FALSE FALSE  TRUE
##  [85] FALSE FALSE FALSE  TRUE FALSE FALSE  TRUE FALSE FALSE FALSE FALSE  TRUE
##  [97] FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE
## [109] FALSE FALSE FALSE FALSE  TRUE FALSE FALSE FALSE FALSE FALSE  TRUE  TRUE
## [121] FALSE FALSE FALSE FALSE FALSE FALSE FALSE  TRUE FALSE  TRUE FALSE FALSE
## [133] FALSE  TRUE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE  TRUE
## [145] FALSE FALSE  TRUE FALSE FALSE  TRUE FALSE  TRUE FALSE FALSE  TRUE FALSE
## [157] FALSE  TRUE FALSE FALSE  TRUE FALSE FALSE  TRUE  TRUE FALSE FALSE FALSE
## [169] FALSE FALSE  TRUE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE  TRUE
## [181] FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE
## [193] FALSE FALSE FALSE FALSE  TRUE  TRUE FALSE FALSE  TRUE FALSE FALSE FALSE
## [205] FALSE FALSE FALSE FALSE  TRUE FALSE  TRUE FALSE FALSE FALSE FALSE FALSE
## [217] FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE  TRUE FALSE
## [229] FALSE FALSE FALSE FALSE FALSE FALSE  TRUE FALSE FALSE  TRUE FALSE FALSE
## [241]  TRUE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE
## [253] FALSE  TRUE FALSE FALSE FALSE FALSE  TRUE FALSE FALSE FALSE FALSE FALSE
## [265] FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE  TRUE  TRUE  TRUE FALSE
## [277] FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE  TRUE
## [289] FALSE  TRUE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE
## [301] FALSE FALSE FALSE FALSE FALSE FALSE  TRUE FALSE  TRUE FALSE FALSE FALSE
## [313] FALSE FALSE FALSE  TRUE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE
## [325] FALSE  TRUE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE
## [337] FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE
## [349]  TRUE FALSE FALSE FALSE FALSE FALSE  TRUE FALSE FALSE FALSE FALSE  TRUE
## [361] FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE
## [373] FALSE FALSE FALSE FALSE  TRUE  TRUE FALSE FALSE  TRUE FALSE FALSE FALSE
## [385] FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE
## [397]  TRUE
sum(str_detect(data$rank,"AsstProf"))
## [1] 67
data %>% 
  summarise(num_AsstProf = sum(str_detect(data$rank,"AsstProf")))
## # A tibble: 1 × 1
##   num_AsstProf
##          <int>
## 1           67

Extract matches

data %>%
  mutate(col_AsstProf = str_extract(rank, "AsstProf")) %>%
  select(rank, col_AsstProf) %>%
  filter(!is.na(col_AsstProf))
## # A tibble: 67 × 2
##    rank     col_AsstProf
##    <chr>    <chr>       
##  1 AsstProf AsstProf    
##  2 AsstProf AsstProf    
##  3 AsstProf AsstProf    
##  4 AsstProf AsstProf    
##  5 AsstProf AsstProf    
##  6 AsstProf AsstProf    
##  7 AsstProf AsstProf    
##  8 AsstProf AsstProf    
##  9 AsstProf AsstProf    
## 10 AsstProf AsstProf    
## # ℹ 57 more rows

Replacing matches

data %>%
  mutate(col_Prof = str_replace(rank, "AsstProf", "Prof")) %>%
  select(rank, col_Prof) 
## # A tibble: 397 × 2
##    rank      col_Prof 
##    <chr>     <chr>    
##  1 Prof      Prof     
##  2 Prof      Prof     
##  3 AsstProf  Prof     
##  4 Prof      Prof     
##  5 Prof      Prof     
##  6 AssocProf AssocProf
##  7 Prof      Prof     
##  8 Prof      Prof     
##  9 Prof      Prof     
## 10 Prof      Prof     
## # ℹ 387 more rows