Original Data

Google Sheets Link

Summary of most damaging events in the data

Grouped by Events and Their corresponding total damages and fatalities

df <- read_csv("100yrdatadisasters_complete.csv", skip = 1) # skip first row of categorizing header
df <- df %>%
  mutate(
    deaths = as.numeric(deaths),
    injuries = as.numeric(injuries),
    damage = as.numeric(damage)
  )
df_summary <- df %>%
  filter(!is.na(event_name)) %>%
  mutate(damage = as.numeric(damage)) %>%
  group_by(event_name) %>%
  summarise(
    TotalEstimatedDamages = sum(unique(na.omit(damage)))
  ) %>%
  filter(TotalEstimatedDamages > 0)

top12 <- df_summary %>%
  arrange(desc(TotalEstimatedDamages)) %>%
  slice_head(n = 12)
kable(head(top12, 12))
event_name TotalEstimatedDamages
Great Flood of 1993 1.500e+10
Fran 5.085e+09
1997 red river flood 5.000e+09
Opal 4.700e+09
May 1995 Louisiana flood 3.100e+09
March 1995 El Nino Central California River Valley Floods 3.000e+09
The Great Ice Storm of 1998 3.000e+09
Georges 2.790e+09
1997 California New Years Floods 2.374e+09
Blizzard Hannah Grand Forks Floods 2.035e+09
mayfest storm 2.000e+09
The Blizzard of 1996 1.000e+09
# sum up other damages outside top 10 to put in a pie chart
other_damage <- df_summary %>%
  filter(!event_name %in% top12$event_name) %>%
  summarise(TotalEstimatedDamages = sum(as.numeric(TotalEstimatedDamages))) %>%
  mutate(event_name = "Other")

# Combine other and top10 for pie chart
plot_data <- bind_rows(top12, other_damage)
plot_data <- plot_data %>%
  mutate(
    TotalEstimatedDamages = as.numeric(TotalEstimatedDamages),
    fraction = TotalEstimatedDamages / sum(TotalEstimatedDamages),
    ymax = cumsum(fraction),
    ymin = lag(ymax, default = 0),
    label_position = (ymax + ymin) / 2,
    label = dollar(TotalEstimatedDamages, accuracy = 1),
    event_name = factor(event_name, levels = event_name[order(-TotalEstimatedDamages)])
  )
#pie chart
ggplot(plot_data, aes(ymax = ymax, ymin = ymin, xmax = 4, xmin = 3, fill = event_name)) +
  geom_rect() +
  coord_polar(theta = "y") +
  xlim(c(2, 4)) +
  theme_void() +
  labs(title = "Top 12 Flood Events by Damages (plus Other)") +
  geom_text(
    aes(x = 3.5, y = label_position, label = label, angle = 0),
    size = 3
  ) +
  scale_fill_discrete(name = "Flood Events(By Most Damages First)")

Response Quantification by Event

To quantify response effort by each event. For now, I simply included the average word count of the entries from the response column, which I have populated with data from researching local hazard mitigation reports, annual USACE reports from 1995-2012(atlasti), FEMA HMGP data, and other local sources/archives where applicable. The top 3 responses from this were the May 1995 Louisiana flood, July 13-14, 1998 Lawrenceburg Flash Flood, and the Northern NY November 1996 Flood. Below the table is a bullet point summary of the types of projects they implemented in response to flood damages.

library(stringr)
df_declared <- df %>%
  filter(`Federal Disaster Declaration` == "y") %>%
  mutate(
    before_and_from = as.numeric(`NFIP totallosses - dateofloss before+from event`),
    after = as.numeric(`NFIP totallosses - dateofloss after event`),
    totalnfip_losses = after + before_and_from,
    Population = as.numeric(Population),
    nfiplosses_difference = (after - before_and_from) 
  ) %>%
  filter(
    is.finite(nfiplosses_difference),
    !is.na(nfiplosses_difference),
    totalnfip_losses > 0,
    Population > 0
  )
df_response_summary <- df_declared %>%
  filter(!is.na(event_name)) %>%
  group_by(event_name) %>%
  summarise(
    TotalEstimatedDamages = sum(unique(na.omit(as.numeric(damage)))),
    avg_wordcount_response = mean(str_count(na.omit(response), "\\w+")),
    Total_deaths = sum(unique(na.omit(as.numeric(deaths)))), 
  ) %>%
  filter(TotalEstimatedDamages > 0) %>%
  arrange(desc(avg_wordcount_response))

kable(head(df_response_summary, 10))
event_name TotalEstimatedDamages avg_wordcount_response Total_deaths
May 1995 Louisiana flood 3.10e+09 211.00 6
July 13-14, 1998 Lawrenceburg Flash Flood 2.20e+07 203.00 2
Northern NY November 1996 Flood 2.50e+07 186.25 0
June 1997 Wisconsin Convective Outbreak 8.40e+07 166.00 0
Milwaukee Flash Floods August 1998 8.20e+07 166.00 0
Hortense 1.25e+08 162.00 21
August 1997 New Jersey Floods 5.40e+07 159.00 0
Honolulu flood November 1996 2.00e+07 149.00 0
Oct-1996 Nor’easter Flood 5.58e+07 144.00 0
March 1995 El Nino Central California River Valley Floods 3.00e+09 129.25 27

1. Mississippi River 1995 Spring Floods

  • The 1995 floods prompted changes to the Mississippi River Mainline Levees Enlargement and Seepage Control Project (originally initiated in 1928).
  • In 1996, the project’s design flowline from Cairo to Cape Girardeau was revised to account for new flood highs.
  • A 1998 report cited the project’s first cost as $656 million.

2. Gulf Coast & Tennessee Flooding (1996–2010)

Lake Pontchartrain & Vicinity Hurricane Protection Project (New Orleans)

  • Project began in 1976 to protect New Orleans from hurricane-induced flooding.
  • Ten construction contracts were initiated in 1996–1997 to continue development.
  • By 2005, the project had built 125 miles of levee, spent $128.6 million, and was estimated to be 60–90% complete prior to Hurricane Katrina.

Harrison County, Mississippi (1998 Flood)

  • Local governments developed hazard mitigation and flood protection plans for Long Beach, Gulfport, Pass Christian, and the broader county.
  • Mitigation measures included:
    • Property buyouts and elevations for repetitive loss structures.
    • Drainage upgrades, such as culvert replacements and erosion control.
    • Retrofits of river gauges to enhance flood monitoring.

Lawrenceburg, Tennessee (1998 Flash Flood & 2010 Flood)

  • 2001–2003: USACE raised the Metro Center Levee, protecting 1,000 acres of commercial property valued at $650 million.
  • Post-2010 flood (31 deaths, $2 billion damages):
    • Ryman Hospitality built a $17 million perimeter floodwall.
    • A proposed $100 million floodwall was denied in both 2010 and 2018.
  • As of 2018, the city had spent $92.9 million on:
    • Pump station improvements
    • Watershed monitoring
    • Feasibility studies and flood preparedness

3. Northern New York Flood Events (1996–1999)

  • January 1996 Flood:
    • Schuyler Falls acquired 20 flood-damaged properties along the Saranac River for $1.4 million.
    • Chazy Lake Dam upgraded for $593,000.
    • Ice control along Great Chazy River for $236,000.
  • December 1996 Flood (Plattsburgh):
    • Major projects:
      • Underwood Ave storm sewer upgrade – $100,000
      • Trafalgar Drive Diversion Ditch – $190,726
      • River Street acquisition – $538,499
      • Intervale Ave buyout (9 properties) – $163,710
  • 1998–1999 Mitigation:
    • Heyworth Village Acquisition (11 buildings, 14.2 acres) – $613,941
    • Water Street buyout (post–Hurricane Floyd) – $133,185
    • Bridge enhancements – $1.5 million
  • Total flood mitigation investment in Clinton County (1996–1999): over $5.2 million

Counties where NFIP losses decreased the most after the flood event period

Using data from the ‘NFIP Multiple Loss Properties - v1’ dataset from FEMA. I joined total losses(flood insurance property insurance claims), which started counting repetitive loss properties in 1978. Therefore, I included the totalloss data from before + from the event for each entry in the original data using each of their unique dates, so the totallosses before+from event is all the losses counted from 1978 up to 10 days after the corresponding flood event. Then, the totallosses after column represents the total NFIP losses from the date 10 days after the original event up to December 19 2024(as per OPENFEMA website). The average after losses were 1153.914, The average before losses were 116.056 The after average could be significantly higher due to multiple reasons outside of my level of expertise. Possibly, due to better record keeping, more insurance coverage programs, etc. Therefore, here I highlighted the exceptions where I looked at the counties that had the greatest differences of the after losses being less than the losses before and during the corresponding flood event. Since, these were rare exceptions, it could indicate that these counties had the most effective responses in terms of flood control/mitigation.

county FIPS Population event_name state NFIP totallosses - dateofloss before+from event NFIP totallosses - dateofloss after event nfiplosses_difference discharge Date reference year_implemented county_state
Milwaukee County 55079 940164 Milwaukee Flash Floods August 1998 wi 480 153 -327 7500 8/6/1998 article , lincolnproj, MMSD, HMGP 1997-ongoing Milwaukee County, wi
Monterey County 06053 401762 1997-1998 Winter El Nino ca 214 92 -122 14700 2/3/1998 ncei, USACE1998, PajaroRiverProj2024, HMGP 1995-1998-ongoing Monterey County, ca
Sacramento County 06067 1223499 1997-1998 Winter El Nino ca 402 281 -121 3320 2/3/1998 ncei, 2006, natoma, Americanriver, sacriver 1998-2006-2016-2018-2023 Sacramento County, ca
Warren County 51187 31584 Fran va 147 51 -96 121000 9/7/1996 usgs summary, HMGP 1996 Warren County, va
Hampshire County 54027 20203 Fran wv 92 14 -78 147000 9/7/1996 usgs summary, HMGP, USACE 1996-1998-1999 Hampshire County, wv
Shenandoah County 51171 35075 Fran va 88 10 -78 12400 9/6/1996 usgs summary, HMGP, shenandoah 1996 Shenandoah County, va
Barbour County 54001 15557 May 1996 Thunderstorm Tygart River Valley Flooding wv 108 40 -68 16700 5/17/1996 usgs summary, HMGP, USACE 1996-2006 Barbour County, wv
Jefferson County 54037 42190 Fran wv 46 14 -32 156000 9/8/1996 usgs summary, HMGP 1996 Jefferson County, wv
Rockbridge County 51163 20808 Fran va 61 32 -29 35800 9/6/1996 usgs summary, HMGP 1996 Rockbridge County, va
Allegany County 24001 74930 Fran md 40 24 -16 6620 9/6/1996 usgs summary, HMGP 1996 Allegany County, md

Exceptional Cases - Milwaukee Wisconsin, California

Some examples of the most effective responses that included large scale projects in terms of decreasing flood losses were seen in the city of Milwaukee and Milwaukee county and several counties in California’s Central River Valley Region. I included the specifics about some of these responses below.

Milwaukee County, WI

  • NFIP Impact: 327 fewer NFIP property losses after the disaster event. 1998 - 2024 < 1978-1998
  • Response Actions:
    • The 1997 and 1998 flash floods marked a major turning point for Milwaukee’s flood protection strategy.
    • Between 1997 and 2017, the city invested approximately $417 million in flood control projects, with 660 homes still remaining in the floodplain as of 2017.
    • The Lincoln Creek Flood Control Project, led by the Milwaukee Metropolitan Sewerage District, cost $120 million and:
      • Removed 2.1 million cubic yards of concrete-lined channels.
      • Created two detention basins capable of protecting against a 100-year flood event.
      • Was recognized as a national model for urban flood management.
    • On April 30, 1999, Milwaukee County requested USACE assistance to study non-structural flood protection along several creeks.
      • However, no further action from the Corps was documented through 2012.

Monterey County, CA

  • NFIP Impact: 122 fewer NFIP property losses after the disaster event.
  • Response Actions:
    • After the 1995 flood, local authorities undertook a range of structural improvements including:
      • Construction of a detention basin.
      • Drainage upgrades, including two 36” reinforced concrete pipes from Rio Road to the Carmel River.
      • Bank protection, an armored weir overflow, and an emergency utility bridge.
      • Acquisition of 13 residences to restore land to its natural floodplain condition.
    • From 1995 to 1998, the U.S. Army Corps of Engineers (USACE) modified the Pajaro River levee system, originally built in 1949. Improvements included:
      • 2.5 miles of flood control levees and/or floodwalls on Salsipuedes and Corralitos Creeks.
      • Installation of pump systems.
    • Despite these efforts, levee failures continued through 2017.
    • In response, the Pajaro River Flood Risk Management Project was proposed in 2022, with plans to build setback levees to expand the river’s floodplain.
      • Construction began in 2024, led by USACE.

Conclusion

From this brief analysis, it can be seen that large scale well coordinated/funded flood control projects like levee renovation, detention basin construction, and flood control specific local municipalities in addition to the targeted acquisition of flood-prone properties. Another case, where the response was thorough, but not as reflected in the loss metric changes were the responses from the Cities in North Dakota(Fargo, Grand Forks) and Minnesota where they cited that the 1997 Red River floods were a massive turning/trigger point for how they responded to flood control. North Dakota and Minnesota communities undertook extensive flood mitigation projects in response over the course of the following years. These included the installation of storm lift stations, pump systems, road grade raises, stormwater drainage upgrades, underground utility protections, and large-scale property acquisitions. Grand Forks and East Grand Forks implemented over 30 miles of levees, 3 miles of floodwall, 24 pump stations, and two diversion channels as part of a $409.3 million USACE-led project. Cass County invested heavily in stream diversion and land buyouts, while Fargo and surrounding townships focused on detention basins, floodproofing, and storm sewer improvements. A major 30-mile diversion channel project for the Fargo area began construction in 2017 after years of planning and is still ongoing as of 2024. The diversion channels are part of the ongoing efforts from these states to reduce the formation of ice jams, which have historically been the source of flood damages(snow melt) like in the Red River Flood in 1997.