R/add_group_col.R
add_group_col.Rd
Add a new variable based on some condition and group rows based on the new variable
add_group_col(data, name, where, value, add = TRUE)
data | a data frame |
---|---|
name | the name of the new variable to be created |
where | the condition in which the new variable should have a value (NA otherwise) |
value | an expression for the content of the new variable when the condition is true |
add | when `add = TRUE` (default), the new variable will add to existing groups. Set to `FALSE` to override all existing groups (passed to `dplyr::group_by`) |
lexicon_str <- '\\lx bureau \\sn 1 \\de desk \\sn 2 \\de office \\lx langue \\sn 1 \\de language \\sn 2 \\de tongue ' read_lexicon(file = lexicon_str, regex = "\\\\?([a-z]*)\\s?(.*)", into = c("code", "value")) %>% add_group_col(name = lx_group, where = code == "lx", value = paste0(line, ": ", value)) %>% add_group_col(name = sense_no, where = code == "sn", value = value)#> # A tibble: 11 x 6 #> # Groups: lx_group, sense_no [6] #> line data code value lx_group sense_no #> <int> <chr> <chr> <chr> <chr> <chr> #> 1 1 "\\lx bureau" lx bureau 1: bureau NA #> 2 2 "\\sn 1" sn 1 1: bureau 1 #> 3 3 "\\de desk" de desk 1: bureau 1 #> 4 4 "\\sn 2" sn 2 1: bureau 2 #> 5 5 "\\de office" de office 1: bureau 2 #> 6 6 "" "" "" 1: bureau 2 #> 7 7 "\\lx langue" lx langue 7: langue NA #> 8 8 "\\sn 1" sn 1 7: langue 1 #> 9 9 "\\de language" de language 7: langue 1 #> 10 10 "\\sn 2" sn 2 7: langue 2 #> 11 11 "\\de tongue" de tongue 7: langue 2