Skip to contents

One of the primary functions of noaastormevents is find_events. This function allows user to retrieve storm event listings from a specified time frame. These listings are retrieved from the the NOAA Storm Events Database and comprised into a dataframe with the following columns:

  • begin_date: The date the event began
  • end_date: The date the event ended
  • state: The state in which the event occurred
  • cz_type: Whether the event was listed by county or by forecast zone (Where possible, events that are listed by forecast zone are linked to the appropriate county FIPS code and therefore not excluded from this returned dataframe. However, this column is included to allow users to perform quality control on events listed by forecast zone (CZ_TYPE of “Z”).)
  • cz_name: The name of the county (or other area name) in which the event occurred.
  • event_type: Event type (e.g., “Flood”, “Lightning”, “Tornado”, “Wildfire”). See the NOAA Storm Events documentation for definitions of these event types
  • source: The source of the storm event listing (e.g., trained spotter, emergency manager, general public, law enforcement)
  • injuries_direct, injuries_indirect, deaths_direct, deaths_indirect, damage_property, damage_crops: Estimates of damage from the event to human health, property, and crops. For damages, initial values in the database (e.g., "5K") have been converted where possible to numeric values (e.g., 5000). See the “Details” vignette for more details on this process.
  • fips: Five-digit county (Federal Information Processing Standard) FIPS code. This code uniquely identifies each U.S. county. If the event was reported by forecast zone (cz_type of Z), code within the package has used regular expressions to try to correctly match the area name to a county FIPS (see the “Details” vignette for more details on this process).

For example, a user can run the following code to pull all storm event listings from September 14, 1999 to September 18, 1999:

sept_1999_events <- find_events(date_range = c("1999-09-14", "1999-09-18"))
head(sept_1999_events)
#> # A tibble: 6 × 14
#>   begin_date end_date   state  cz_type cz_name event_type source injuries_direct
#>   <date>     <date>     <chr>  <chr>   <chr>   <chr>      <chr>            <int>
#> 1 1999-09-14 1999-09-14 Flori… C       Duval   Thunderst… TRAIN…               0
#> 2 1999-09-14 1999-09-14 Flori… C       St. Jo… Thunderst… TRAIN…               0
#> 3 1999-09-14 1999-09-14 Arizo… C       Marico… Hail       OFFIC…               0
#> 4 1999-09-14 1999-09-14 Arizo… C       Marico… Hail       TRAIN…               0
#> 5 1999-09-14 1999-09-14 Arizo… C       Pinal   Thunderst… NEWSP…               0
#> 6 1999-09-14 1999-09-14 Arizo… C       Marico… Lightning  EMERG…               1
#> # ℹ 6 more variables: injuries_indirect <int>, deaths_direct <int>,
#> #   deaths_indirect <int>, damage_property <dbl>, damage_crops <dbl>,
#> #   fips <dbl>

In addition, find_events can focus on events specified by the event_types argument. If a user only wants data on hurricane events from the same date range specified above, they could run:

sept_1999_hurricane_events <- find_events(date_range = c("1999-09-14", "1999-09-18"),
                                          event_types = c("Hurricane (Typhoon)"))
head(sept_1999_hurricane_events)
#> # A tibble: 6 × 14
#>   begin_date end_date   state  cz_type cz_name event_type source injuries_direct
#>   <date>     <date>     <chr>  <chr>   <chr>   <chr>      <chr>            <int>
#> 1 1999-09-14 1999-09-14 Flori… Z       De Soto Hurricane… OFFIC…               0
#> 2 1999-09-14 1999-09-14 Flori… Z       Hardee  Hurricane… OFFIC…               0
#> 3 1999-09-14 1999-09-14 Flori… Z       Manatee Hurricane… OFFIC…               0
#> 4 1999-09-14 1999-09-14 Flori… Z       Saraso… Hurricane… OFFIC…               0
#> 5 1999-09-14 1999-09-14 Flori… Z       Hillsb… Hurricane… OFFIC…               0
#> 6 1999-09-14 1999-09-14 Flori… Z       Polk    Hurricane… OFFIC…               0
#> # ℹ 6 more variables: injuries_indirect <int>, deaths_direct <int>,
#> #   deaths_indirect <int>, damage_property <dbl>, damage_crops <dbl>,
#> #   fips <dbl>

Further, users can also filter events within proximity to a specified tropical storm track. For this additional specification, the package calls on the packages hurricaneexposure (available on CRAN) and hurricaneexposuredata (available through a drat repository). Data and functions from these packages help match storm events to tropical storm events by storm name and proximity. These can be specified using the storm, and dist_limit options in the function.

Event listings are pulled for all events that occurred within a five-day window of the day the storm was closest to each county and that were in counties within a user-specified distance of the storm track. For example, to create a dataset with all event listings for counties within 300 kilometers (dist_limit option) of the path of Hurricane Floyd (storm = "Floyd-1999") for a five-day window of the storm’s closest approach to each county, the user can run:

floyd_events <- find_events(storm = "Floyd-1999", dist_limit = 300)
head(floyd_events)
#> # A tibble: 6 × 16
#>   begin_date end_date   state  cz_type cz_name event_type source injuries_direct
#>   <date>     <date>     <chr>  <chr>   <chr>   <chr>      <chr>            <int>
#> 1 1999-09-13 1999-09-14 Flori… Z       Coasta… Hurricane… NEWSP…               0
#> 2 1999-09-13 1999-09-14 Flori… Z       Coasta… Hurricane… NEWSP…               0
#> 3 1999-09-14 1999-09-14 Flori… C       Duval   Thunderst… TRAIN…               0
#> 4 1999-09-14 1999-09-14 Flori… C       St. Jo… Thunderst… TRAIN…               0
#> 5 1999-09-14 1999-09-14 Flori… C       Palm B… Tornado    EMERG…               0
#> 6 1999-09-14 1999-09-14 North… C       Martin  Flash Flo… EMERG…               0
#> # ℹ 8 more variables: injuries_indirect <int>, deaths_direct <int>,
#> #   deaths_indirect <int>, damage_property <dbl>, damage_crops <dbl>,
#> #   fips <dbl>, storm_id <chr>, usa_atcf_id <chr>

Note that the storm ID includes a storm name (“Floyd”) and year (“1999”). Both must be specified, as storm names are not retired until they are used for a very severe storm. This functionality will only work for storms included in the hurricaneexposuredata package.

Once find_events has been used to create a dataset of storm event listings, the dataset can be explored. The user can do things like determine the number of events of each type that occurred near in time and location to a storm’s track. For example, here is a summary of numbers of different types of events for Hurricane Floyd, created using dplyr tools:

library(dplyr)
floyd_events %>%
  group_by(event_type) %>%
  summarize(n = n()) %>%
  arrange(desc(n)) %>%
  knitr::kable(col.names = c("Event type", "Number of events"),
               caption = "NOAA Storm Events within 200 km and within a 5-day window of Hurricane Floyd.")
NOAA Storm Events within 200 km and within a 5-day window of Hurricane Floyd.
Event type Number of events
Flash Flood 232
High Wind 157
Hurricane (Typhoon) 118
Heavy Rain 28
Strong Wind 21
Thunderstorm Wind 19
Tornado 18
Tropical Storm 16
Flood 14
Coastal Flood 10
Storm Surge/Tide 5
Funnel Cloud 2
Waterspout 1

Similarly, you could create a summary with the states in which the most events were listed and give the number and type of events in each of those counties:

floyd_events %>%
  group_by(state, event_type) %>%
  summarize(n = n()) %>%
  ungroup() %>%
  arrange(state, desc(n)) %>%
  mutate(event_type = paste0(event_type, " (", n, ")")) %>%
  group_by(state) %>%
  summarize(Total = sum(n),
            Events = paste(event_type, collapse = ", ")) %>%
  ungroup() %>%
  arrange(desc(Total)) %>%
  knitr::kable()
state Total Events
North Carolina 146 Flash Flood (58), Hurricane (Typhoon) (58), Tornado (17), High Wind (9), Funnel Cloud (2), Thunderstorm Wind (1), Waterspout (1)
Virginia 97 Flash Flood (57), High Wind (16), Hurricane (Typhoon) (16), Tropical Storm (5), Flood (2), Heavy Rain (1)
Pennsylvania 58 Flash Flood (28), High Wind (27), Coastal Flood (3)
New York 52 High Wind (27), Flash Flood (24), Flood (1)
New Jersey 51 Flash Flood (18), High Wind (18), Coastal Flood (5), Tropical Storm (4), Heavy Rain (3), Hurricane (Typhoon) (3)
Maryland 43 Flash Flood (15), High Wind (11), Tropical Storm (6), Storm Surge/Tide (5), Hurricane (Typhoon) (4), Heavy Rain (2)
Massachusetts 37 Strong Wind (12), Heavy Rain (11), High Wind (11), Flash Flood (2), Flood (1)
South Carolina 33 Thunderstorm Wind (13), Hurricane (Typhoon) (11), High Wind (5), Flash Flood (4)
Maine 23 High Wind (12), Flash Flood (6), Flood (5)
Florida 21 Hurricane (Typhoon) (13), Thunderstorm Wind (5), Flash Flood (2), Tornado (1)
Connecticut 18 Flash Flood (7), Heavy Rain (4), Strong Wind (3), Flood (2), High Wind (2)
Vermont 17 High Wind (14), Flash Flood (3)
Rhode Island 14 Heavy Rain (5), Strong Wind (5), Flash Flood (2), High Wind (2)
Georgia 13 Hurricane (Typhoon) (13)
Delaware 8 Flash Flood (3), High Wind (3), Coastal Flood (2)
New Hampshire 8 Flood (3), Flash Flood (2), Heavy Rain (2), Strong Wind (1)
District Of Columbia 2 Flash Flood (1), Tropical Storm (1)

To see examples of how data pulled from find_events can be visualized, visit the article on “Mapping Events”. For more details on the underlying data and how the package processes it, see the “Details” article.