Prune plaintext "Chart of Accounts" names to a given maximum depth
Source:R/prune_coa.R
prune_coa.Rdprune_coa is a convenience function that modifies a data frame
by either editing in place or making
a new variable containing the plaintext "Chart of Accounts" pruned to a given maximum depth
e.g. "Assets:Checking:Credit-Union:Account1" at a maximum depth of 2 will be converted to "Assets:Checking".
prune_coa uses tidyverse non-standard evaluation (NSE).
prune_coa_string is a convenience function which does the pruning operation on character vectors.
Examples
df <- tibble::tribble(~account, ~amount,
"Assets:Checking:BankA", 1000,
"Assets:Checking:BankB", 1000,
"Assets:Savings:BankA", 1000,
"Assets:Savings:BankC", 1000)
prune_coa(df)
#> # A tibble: 4 × 2
#> account amount
#> <chr> <dbl>
#> 1 Assets 1000
#> 2 Assets 1000
#> 3 Assets 1000
#> 4 Assets 1000
prune_coa(df, 2)
#> # A tibble: 4 × 2
#> account amount
#> <chr> <dbl>
#> 1 Assets:Checking 1000
#> 2 Assets:Checking 1000
#> 3 Assets:Savings 1000
#> 4 Assets:Savings 1000
prune_coa(df, 3)
#> # A tibble: 4 × 2
#> account amount
#> <chr> <dbl>
#> 1 Assets:Checking:BankA 1000
#> 2 Assets:Checking:BankB 1000
#> 3 Assets:Savings:BankA 1000
#> 4 Assets:Savings:BankC 1000
prune_coa(df, 4)
#> # A tibble: 4 × 2
#> account amount
#> <chr> <dbl>
#> 1 Assets:Checking:BankA 1000
#> 2 Assets:Checking:BankB 1000
#> 3 Assets:Savings:BankA 1000
#> 4 Assets:Savings:BankC 1000
prune_coa(df, 2, account, account2)
#> # A tibble: 4 × 3
#> account amount account2
#> <chr> <dbl> <chr>
#> 1 Assets:Checking:BankA 1000 Assets:Checking
#> 2 Assets:Checking:BankB 1000 Assets:Checking
#> 3 Assets:Savings:BankA 1000 Assets:Savings
#> 4 Assets:Savings:BankC 1000 Assets:Savings
prune_coa(prune_coa(df, 2, account, account2), 3, account2, account3)
#> # A tibble: 4 × 4
#> account amount account2 account3
#> <chr> <dbl> <chr> <chr>
#> 1 Assets:Checking:BankA 1000 Assets:Checking Assets:Checking
#> 2 Assets:Checking:BankB 1000 Assets:Checking Assets:Checking
#> 3 Assets:Savings:BankA 1000 Assets:Savings Assets:Savings
#> 4 Assets:Savings:BankC 1000 Assets:Savings Assets:Savings
prune_coa_string(df$account, 2)
#> [1] "Assets:Checking" "Assets:Checking" "Assets:Savings" "Assets:Savings"