cook_ratechange <- pin_data |>
filter(!clean_name %in% cross_county_line) |>
summarize(
## New Tax Base Calculations
new_TEAV_noIncents = sum(ifelse(class >= 600 & class < 900,
(taxed_av*eq_factor/loa)*0.25, taxed_av*eq_factor), na.rm=TRUE),
## NewTax Base Calculations
new_TEAV_noCommercIncents = sum(ifelse(class >= 600 & class < 900 & class %in% commercial_classes,
(taxed_av*eq_factor/loa)*0.25, taxed_av*eq_factor), na.rm=TRUE),
new_TEAV_noIndustIncents = sum(ifelse(class >= 600 & class < 900 & class %in% industrial_classes,
(taxed_av*eq_factor/loa)*0.25, taxed_av*eq_factor), na.rm=TRUE),
new_TEAV_noC6 = sum(ifelse( class >=600 & class < 700,
(taxed_av*eq_factor/loa)*0.25 , taxed_av*eq_factor), na.rm=TRUE),
new_TEAV_noC7 = sum(ifelse(class >=700 & class < 800,
(taxed_av*eq_factor/loa)*0.25, taxed_av*eq_factor), na.rm=TRUE),
new_TEAV_noC8 = sum(ifelse(class >=800 & class < 900, (taxed_av*eq_factor/loa)*0.25, taxed_av*eq_factor), na.rm=TRUE),
new_TEAV_vacant_props = sum(ifelse(class >=600 & class <900, # if incentive classes were assessed at 0% (aka not taxedat all) or if the building lost its value completely without the incentive classification.
0, taxed_av*eq_factor), na.rm=TRUE),
new_TEAV_noExemps = sum(taxed_av*eq_factor + exe_total_adj, na.rm=TRUE), # does not include abatements
new_TEAV_noAbates = sum(taxed_av*eq_factor + exe_abate, na.rm=TRUE), # include only abatements, not other exemption types
# TIF increment above the frozen EAV
forgone_TIF_EAV = sum(fmv_tif_increment * loa * eq_factor, na.rm=TRUE),
cty_PC = n(),
# projects = n_distinct(both_ids), # mostly for industrial and commercial properties
pins_withincents = sum(incent_prop == 1),
fmv_incentive = sum(ifelse(incent_prop == 1, fmv, 0), na.rm = TRUE),
#fmv_taxed = sum(taxed_fmv, na.rm=TRUE),
fmv_incents_inTIFs = sum(ifelse(incent_prop == 1 & final_tax_to_tif > 0, fmv, 0), na.rm = TRUE),
fmv_inTIF = sum(fmv_inTIF, na.rm=TRUE),
fmv_tif_increment = sum(fmv_tif_increment, na.rm=TRUE),
# fmv_untaxable_value = sum(untaxable_value_fmv , na.rm=TRUE),
fmv_exemptions = sum(exe_total_adj/eq_factor/loa, na.rm=TRUE),
fmv_abatements = sum(exe_abate/eq_factor/loa, na.rm=TRUE),
zero_bill = sum(zero_bill, na.rm=TRUE),
fmv_residential = sum(ifelse(res_prop==1, fmv, 0), na.rm = TRUE),
fmv_C2 = sum(ifelse(c2_prop == 1, fmv, 0), na.rm = TRUE),
fmv_industrial = sum(ifelse(class %in% industrial_classes, fmv, 0), na.rm = TRUE),
fmv_commercial = sum(ifelse(class %in% commercial_classes, fmv, 0), na.rm = TRUE),
current_rate_avg = mean(tax_code_rate),
avg_C2_bill_noexe = mean(ifelse(between(class,200,299) & exe_total_adj == 0, (final_tax_to_dist + final_tax_to_tif), NA), na.rm=TRUE),
avg_C2_bill_withexe = mean(ifelse(between(class,200,299) & exe_total_adj > 0, (final_tax_to_dist + final_tax_to_tif), NA), na.rm=TRUE),
av_taxed = sum(taxed_av, na.rm = TRUE),
untaxable_value_av = sum(untaxable_value_av, na.rm=TRUE),
av = sum(av),
eav_taxed = sum(taxed_av*eq_factor),
eav_untaxable = sum(untaxable_value_eav, na.rm=TRUE),
fmv = sum(fmv, na.rm=TRUE),
pins_in_class = n(),
exe_total_adj = sum(exe_total_adj), # in EAV
abatements = sum(exe_abate), # in EAV
eav_incents_inTIFs = sum(ifelse(incent_prop == 1 & in_tif == 1, taxed_eav, 0), na.rm = TRUE),
final_tax_to_dist = sum(final_tax_to_dist), ## Amount of Total Levy
final_tax_to_tif = sum(final_tax_to_tif),
eq_av = sum(eq_av)) |>
mutate(
reducedEAV_comind_incents = new_TEAV_noIncents - eav_taxed,
reducedEAV_commerc_incents = new_TEAV_noCommercIncents - eav_taxed,
reducedEAV_indust_incents = new_TEAV_noIndustIncents - eav_taxed,
# Absolute maximum TEAV: No Exemptions, no abatements, no TIFS, no Incentive properties
# Commercial and industrial assessed at 25%
TEAV_max = eav_taxed + exe_total_adj + abatements + forgone_TIF_EAV + reducedEAV_comind_incents,
# no exemptions or incentive classifications:
TEAV_neither = eav_taxed + exe_total_adj + reducedEAV_comind_incents,
rate_noExe = final_tax_to_dist / new_TEAV_noExemps,
rate_noCommercInc = final_tax_to_dist / new_TEAV_noCommercIncents,
rate_noIndustInc = final_tax_to_dist / new_TEAV_noIndustIncents,
rate_noAbate = final_tax_to_dist / new_TEAV_noAbates,
rate_noInc = final_tax_to_dist / new_TEAV_noIncents ,
rate_neither = final_tax_to_dist / TEAV_neither,
rate_noTIFs = final_tax_to_dist / (eav_taxed + forgone_TIF_EAV),
rate_vacant = final_tax_to_dist / new_TEAV_vacant_props,
rate_lowest = final_tax_to_dist / TEAV_max ,
rate_current = final_tax_to_dist / eav_taxed,
change_noInc = rate_current - rate_noInc,
forgonerev_noExe = rate_noExe * exe_total_adj,
forgonerev_noAbate = rate_noAbate * (new_TEAV_noAbates - eav_taxed),
forgonerev_noIncents = rate_noInc * (new_TEAV_noIncents - eav_taxed),
forgonerev_noCommercIncents = rate_noInc * (new_TEAV_noCommercIncents - eav_taxed),
forgonerev_noIndustIncents = rate_noInc* (new_TEAV_noIndustIncents - eav_taxed),
forgone_noExe_or_Inc = rate_neither * (TEAV_neither - eav_taxed),
forgonerev_noTIFs = rate_noTIFs * forgone_TIF_EAV,
forgonerev_vacant = rate_vacant * (new_TEAV_vacant_props - eav_taxed),
forgonerev_maxTEAV = rate_lowest * (TEAV_max - eav_taxed)
)
cook_ratechange |>
mutate(across(contains("rate"), scales::percent, accuracy = .01),
change_noInc = round(change_noInc*100, digits = 2)) |>
select("Current Composite Rate" = rate_current,
"Rate if Incentive Props LoA is 25%" = rate_noInc,
"Tax Rate Change" = change_noInc) |>
flextable()