This function calculates a Cook County property tax bill using levy, base, and TIF information from the Cook County Clerk and Assessor. It allows users to simulate different tax scenarios by changing the input data. For example, this function can be used to answer the following questions:
What would my tax bill be if my assessed value was $10K lower?
What would my tax bill be if Chicago increased its levy by 5%?
What would my tax bill be if my property was in a different neighborhood?
What would my tax bill be if a large new development was added to my neighborhood?
Most of the data necessary to answer these questions is built into the included database. Data for the most current tax year is usually available the following year (i.e. 2021 data is available in 2022). If needed, users can supply current tax year data manually. See vignettes for more information.
Usage
tax_bill(
year_vec,
pin_vec,
tax_code_vec = lookup_tax_code(year_vec, pin_vec),
agency_dt = lookup_agency(year_vec, tax_code_vec),
pin_dt = lookup_pin(year_vec, pin_vec),
tif_dt = lookup_tif(year_vec, tax_code_vec),
simplify = TRUE
)
Arguments
- year_vec
Numeric vector of tax years for which to return bills.
- pin_vec
Character vector of 14-digit Property Index Numbers (PINs) with no dashes or spaces.
- tax_code_vec
Character vector of 5-digit Cook County tax codes. These codes are included on individual property tax bills. If missing, the
lookup_tax_code
function is used to retrieve tax codes based onyear_vec
andpin_vec
.- agency_dt
data.table
containing the levy and base amount for each taxing district in the specified tax code. Data must be identical to the format returned bylookup_agency
. If missing,lookup_agency
is used to retrieve each tax district's levy and base based onyear_vec
andtax_code_vec
.- pin_dt
data.table
containing the exemptions and assessed value specific to each PIN and year. Data must be identical to the format returned bylookup_pin
. If missing,lookup_pin
is used to retrieve each PIN's information based onyear_vec
andpin_vec
.- tif_dt
data.table
containing any TIF applicable to the specified tax code. Is an emptydata.table
if no TIF exists for the property. Data must be identical to the format returned bylookup_tif
. If missing,lookup_tif
is used to retrieve the tax code's TIF share based onyear_vec
andtax_code_vec
.- simplify
Default
TRUE
. Boolean to keep only the columns that appear on a real tax bill. Additionally, collapses the TIF output columnfinal_tax_to_tif
to a line-item, similar to the format on a real tax bill.
Value
A data.table
which contains a tax bill for each specified PIN
and year. Each tax bill is broken out by taxing district, meaning there is
a row for each district relevant to each PIN. Most PINs have 10-15
districts (rows) associated with each year.
Details
Note that all vector inputs (suffixed with _vec
) have two
input modes:
If the input vectors are the same length, pairwise tax bills are returned (each PIN, year, and tax code combination returns 1 bill).
If the input vectors are different lengths, the Cartesian product of the vectors is returned (5 years and 10 PINs will return all 5 years of bills for each PIN).
The district-level tax amounts returned by this function will not perfectly match the amounts on real tax bills. This is due to rounding and truncating that occurs in the real system. Most estimated amounts will still be within a few dollars of the amounts on real bills.
PIN and year combinations not found in the database will be silently dropped from the output.
Examples
if (FALSE) { # \dontrun{
# Get a single tax bill
tax_bill(2019, "14081020210000")
# Get tax bills for multiple years
tax_bill(2017:2019, "14081020210000")
# Get multiple tax bills for different PINs and years
tax_bill(c(2014, 2019), c("14081020210000", "07133020190000"))
# Get a tax bill for a new location
tax_bill(2019, "14081020210000", tax_code_vec = "35011")
} # }