exposure_indicators: Heat exposure indicators

View source: R/exposure_indicators.R

exposure_indicatorsR Documentation

Heat exposure indicators

Description

Summarizes daily temperature (and optionally humidity) into heat exposure indicators per location and year or month, as used in heat-health vulnerability indices: heatwave and warm-night frequency and duration, diurnal temperature range, WBGT, heat index and wet-bulb temperature, plus the ETCCDI indices TX90p, TN90p, WSDI and tropical nights.

Usage

exposure_indicators(
  data,
  by = c("latitude", "longitude"),
  period = c("year", "month"),
  months = NULL,
  baseline = c(1991, 2020),
  heatwave_method = c("imd", "percentile", "ehf"),
  warm_night_method = c("imd", "percentile", "absolute"),
  terrain = c("auto", "plains", "coastal", "hilly"),
  hill_elevation = 1200,
  cell_size = NULL
)

Arguments

data

A data.frame of daily values; see Details.

by

Columns identifying a location, or NULL for a single series.

period

Summarize by "year" or "month".

months

Months (1-12) to include, e.g. 3:6 for the Indian hot season; NULL for all.

baseline

Climatology years, c(first, last), for normals and percentiles.

heatwave_method

Passed to heatwave_days() as method.

warm_night_method

Passed to warm_nights() as method.

terrain

Passed to heatwave_days() for the IMD definition. "auto" classifies each location with imd_terrain() from its latitude and longitude columns and adds a terrain column.

hill_elevation, cell_size

Passed to imd_terrain() when terrain = "auto".

Details

data needs columns date, tmax and tmin (degrees Celsius), one row per day per location, covering the baseline years. With a dewpoint column (degrees Celsius), afternoon humidity metrics are computed from tmax and dewpoint: WBGT by wbgt_simple(), heat index and wet-bulb temperature. A wbgt column, such as daily maxima of wbgt_liljegren(), replaces the wbgt_simple() estimate.

Spells are found on the full series, so a heatwave spanning two periods counts as an event in the period where it starts and its days count where they fall. months filters the summary.

Value

A data.frame with one row per location and period and columns:

n_days

days with data

tmax_mean, tmin_mean

mean daily maximum and minimum temperature

dtr_mean

mean diurnal temperature range (ETCCDI DTR)

hot_days

days with Tmax of at least 40 C

tropical_nights

nights with Tmin above 20 C (ETCCDI TR)

tx90p, tn90p

percent of days above the calendar-day 90th percentile of Tmax and Tmin

wsdi

days in runs of at least 6 days with Tmax above its 90th percentile (ETCCDI WSDI)

heatwave_days, heatwave_events, heatwave_longest, severe_heatwave_days

heatwave duration (total days), frequency (events starting in the period), longest event and severe days, from heatwave_days()

warm_nights, warm_night_spells, warm_night_longest, very_warm_nights

the same for warm_nights()

With humidity: wbgt_mean, wbgt_max, wbgt_days_high (WBGT of at least 29.4 C, 85 F) and wbgt_days_extreme (at least 31.1 C, 88 F), heat_index_max, heat_index_days_danger (at least 39.4 C, 103 F), wet_bulb_max and wet_bulb_days_31 (wet bulb of at least 31 C, near the 30.55 C mean critical limit of Vecellio et al. 2022).

References

Vecellio, D.J., Wolf, S.T., Cottle, R.M. & Kenney, W.L. (2022). Evaluating the 35 C wet-bulb temperature adaptability threshold for young, healthy subjects (PSU HEAT Project). Journal of Applied Physiology, 132(2), 340-345. \Sexpr[results=rd]{tools:::Rd_expr_doi("10.1152/japplphysiol.00738.2021")}

See Also

imd_exposure_bbox() to download IMD data and compute these in one call; ndvi() and ndbi() for the land-surface indicators.

Examples

d <- seq(as.Date("2001-01-01"), as.Date("2004-12-31"), by = "day")
doy <- as.POSIXlt(d)$yday
tmax <- 33 + 8 * sin(2 * pi * (doy - 80) / 365)
tmax[d >= as.Date("2004-05-10") & d <= as.Date("2004-05-14")] <- 46.5
daily <- data.frame(date = d, tmax = tmax, tmin = tmax - 13, dewpoint = 18)
exposure_indicators(daily, by = NULL, baseline = c(2001, 2003), terrain = "plains")

# Jaipur: terrain looked up from the coordinates
daily$latitude <- 26.9
daily$longitude <- 75.8
exposure_indicators(daily, baseline = c(2001, 2003))

varunayan documentation built on Oct. 30, 2026, 1:07 a.m.