Skip to contents

prune_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.

Usage

prune_coa(df, depth = 1, variable, name)

prune_coa_string(x, depth = 1)

Arguments

df

A data frame

depth

How deep should the account structure be.

variable

Which variable to make less deep (default is to use "account")

name

New variable name (default is to edit the variable argument in place)

x

Character vector

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"