Calculate marginal tax rates using R

后端 未结 3 1320
闹比i
闹比i 2021-02-07 16:26

I\'m writing a function to calculate tax owed given a level of income according to Australia\'s marginal tax rates.

I\'ve written a simple version of the function that r

3条回答
  •  孤独总比滥情好
    2021-02-07 17:24

    Here's a one-liner that does the trick:

    income_tax <- 
    function(income,
             brackets = c(18200, 37000, 80000, 180000, Inf),
             rates = c(0, .19, .325, .37, .45)) {        
        sum(diff(c(0, pmin(income, brackets))) * rates)
    }
    

    Perhaps the easiest way to see how/why it works is to play around with the core bit of logic with some simpler parameters, like this:

    brackets <- c(1:5, Inf)
    
    diff(c(0, pmin(.35, brackets)))
    ## [1] 0.35 0.00 0.00 0.00 0.00 0.00
    diff(c(0, pmin(3.9, brackets)))
    ## [1] 1.0 1.0 1.0 0.9 0.0 0.0
    diff(c(0, pmin(99, brackets)))
    ## [1]  1  1  1  1  1 94
    

提交回复
热议问题