This analysis examines the health and economic effects of severe weather events in the United States using the NOAA Storm Database. Population health impacts are measured using fatalities and injuries, while economic impacts are measured using property and crop damage. The results show that tornadoes caused the greatest number of fatalities and injuries. Floods caused the greatest total economic damage, followed by hurricanes or typhoons and tornadoes.
The original compressed NOAA Storm Database file was loaded directly into R without any external preprocessing. The dataset contains 902,297 observations and 37 variables. Fatalities and injuries were summarized by event type to evaluate population health impacts. Property and crop damage values were converted into dollar amounts using the magnitude indicators K, M, and B.
storm_data <- read.csv(
bzfile("repdata_data_StormData.csv.bz2"),
stringsAsFactors = FALSE
)
dim(storm_data)
## [1] 902297 37
colnames(storm_data)
## [1] "STATE__" "BGN_DATE" "BGN_TIME" "TIME_ZONE" "COUNTY"
## [6] "COUNTYNAME" "STATE" "EVTYPE" "BGN_RANGE" "BGN_AZI"
## [11] "BGN_LOCATI" "END_DATE" "END_TIME" "COUNTY_END" "COUNTYENDN"
## [16] "END_RANGE" "END_AZI" "END_LOCATI" "LENGTH" "WIDTH"
## [21] "F" "MAG" "FATALITIES" "INJURIES" "PROPDMG"
## [26] "PROPDMGEXP" "CROPDMG" "CROPDMGEXP" "WFO" "STATEOFFIC"
## [31] "ZONENAMES" "LATITUDE" "LONGITUDE" "LATITUDE_E" "LONGITUDE_"
## [36] "REMARKS" "REFNUM"
head(storm_data)
## STATE__ BGN_DATE BGN_TIME TIME_ZONE COUNTY COUNTYNAME STATE EVTYPE
## 1 1 4/18/1950 0:00:00 0130 CST 97 MOBILE AL TORNADO
## 2 1 4/18/1950 0:00:00 0145 CST 3 BALDWIN AL TORNADO
## 3 1 2/20/1951 0:00:00 1600 CST 57 FAYETTE AL TORNADO
## 4 1 6/8/1951 0:00:00 0900 CST 89 MADISON AL TORNADO
## 5 1 11/15/1951 0:00:00 1500 CST 43 CULLMAN AL TORNADO
## 6 1 11/15/1951 0:00:00 2000 CST 77 LAUDERDALE AL TORNADO
## BGN_RANGE BGN_AZI BGN_LOCATI END_DATE END_TIME COUNTY_END COUNTYENDN
## 1 0 0 NA
## 2 0 0 NA
## 3 0 0 NA
## 4 0 0 NA
## 5 0 0 NA
## 6 0 0 NA
## END_RANGE END_AZI END_LOCATI LENGTH WIDTH F MAG FATALITIES INJURIES PROPDMG
## 1 0 14.0 100 3 0 0 15 25.0
## 2 0 2.0 150 2 0 0 0 2.5
## 3 0 0.1 123 2 0 0 2 25.0
## 4 0 0.0 100 2 0 0 2 2.5
## 5 0 0.0 150 2 0 0 2 2.5
## 6 0 1.5 177 2 0 0 6 2.5
## PROPDMGEXP CROPDMG CROPDMGEXP WFO STATEOFFIC ZONENAMES LATITUDE LONGITUDE
## 1 K 0 3040 8812
## 2 K 0 3042 8755
## 3 K 0 3340 8742
## 4 K 0 3458 8626
## 5 K 0 3412 8642
## 6 K 0 3450 8748
## LATITUDE_E LONGITUDE_ REMARKS REFNUM
## 1 3051 8806 1
## 2 0 0 2
## 3 0 0 3
## 4 0 0 4
## 5 0 0 5
## 6 0 0 6
head(unique(storm_data$EVTYPE), 20)
## [1] "TORNADO" "TSTM WIND"
## [3] "HAIL" "FREEZING RAIN"
## [5] "SNOW" "ICE STORM/FLASH FLOOD"
## [7] "SNOW/ICE" "WINTER STORM"
## [9] "HURRICANE OPAL/HIGH WINDS" "THUNDERSTORM WINDS"
## [11] "RECORD COLD" "HURRICANE ERIN"
## [13] "HURRICANE OPAL" "HEAVY RAIN"
## [15] "LIGHTNING" "THUNDERSTORM WIND"
## [17] "DENSE FOG" "RIP CURRENT"
## [19] "THUNDERSTORM WINS" "FLASH FLOOD"
Fatalities and injuries were aggregated by weather event type to identify which events had the greatest impact on human health. The event types were then ranked separately according to total fatalities and total injuries.
health_summary <- aggregate(
cbind(FATALITIES, INJURIES) ~ EVTYPE,
data = storm_data,
sum
)
head(health_summary)
## EVTYPE FATALITIES INJURIES
## 1 HIGH SURF ADVISORY 0 0
## 2 COASTAL FLOOD 0 0
## 3 FLASH FLOOD 0 0
## 4 LIGHTNING 0 0
## 5 TSTM WIND 0 0
## 6 TSTM WIND (G45) 0 0
top_fatalities <- health_summary[
order(health_summary$FATALITIES, decreasing = TRUE),
]
head(top_fatalities, 10)
## EVTYPE FATALITIES INJURIES
## 834 TORNADO 5633 91346
## 130 EXCESSIVE HEAT 1903 6525
## 153 FLASH FLOOD 978 1777
## 275 HEAT 937 2100
## 464 LIGHTNING 816 5230
## 856 TSTM WIND 504 6957
## 170 FLOOD 470 6789
## 585 RIP CURRENT 368 232
## 359 HIGH WIND 248 1137
## 19 AVALANCHE 224 170
top_injuries <- health_summary[
order(health_summary$INJURIES, decreasing = TRUE),
]
head(top_injuries, 10)
## EVTYPE FATALITIES INJURIES
## 834 TORNADO 5633 91346
## 856 TSTM WIND 504 6957
## 170 FLOOD 470 6789
## 130 EXCESSIVE HEAT 1903 6525
## 464 LIGHTNING 816 5230
## 275 HEAT 937 2100
## 427 ICE STORM 89 1975
## 153 FLASH FLOOD 978 1777
## 760 THUNDERSTORM WIND 133 1488
## 244 HAIL 15 1361
The analysis shows that tornadoes caused the highest number of fatalities and injuries among all weather events. Floods resulted in the greatest overall economic damage, followed by hurricanes or typhoons and tornadoes. These findings indicate that different weather events have different impacts on public health and economic loss.
barplot(
top_fatalities$FATALITIES[1:10],
names.arg = top_fatalities$EVTYPE[1:10],
las = 2,
cex.names = 0.7,
main = "Top 10 Weather Events by Fatalities",
ylab = "Fatalities"
)
Property and crop damage values were converted into actual dollar amounts based on the magnitude indicators (K = thousand, M = million, B = billion). Total economic damage was calculated by summing property and crop damage for each weather event type. The event types were then ranked according to total economic loss.
storm_data$PROPDMGEXP <- toupper(storm_data$PROPDMGEXP)
storm_data$CROPDMGEXP <- toupper(storm_data$CROPDMGEXP)
storm_data$PROP_DAMAGE <- storm_data$PROPDMG *
ifelse(storm_data$PROPDMGEXP == "K", 1e3,
ifelse(storm_data$PROPDMGEXP == "M", 1e6,
ifelse(storm_data$PROPDMGEXP == "B", 1e9, 1)))
storm_data$CROP_DAMAGE <- storm_data$CROPDMG *
ifelse(storm_data$CROPDMGEXP == "K", 1e3,
ifelse(storm_data$CROPDMGEXP == "M", 1e6,
ifelse(storm_data$CROPDMGEXP == "B", 1e9, 1)))
economic_summary <- aggregate(
cbind(PROP_DAMAGE, CROP_DAMAGE) ~ EVTYPE,
data = storm_data,
sum
)
economic_summary$TOTAL_DAMAGE <-
economic_summary$PROP_DAMAGE +
economic_summary$CROP_DAMAGE
top_damage <- economic_summary[
order(economic_summary$TOTAL_DAMAGE,
decreasing = TRUE),
]
head(top_damage, 10)
## EVTYPE PROP_DAMAGE CROP_DAMAGE TOTAL_DAMAGE
## 170 FLOOD 144657709807 5661968450 150319678257
## 411 HURRICANE/TYPHOON 69305840000 2607872800 71913712800
## 834 TORNADO 56937160779 414953270 57352114049
## 670 STORM SURGE 43323536000 5000 43323541000
## 244 HAIL 15732267048 3025954473 18758221521
## 153 FLASH FLOOD 16140812067 1421317100 17562129167
## 95 DROUGHT 1046106000 13972566000 15018672000
## 402 HURRICANE 11868319010 2741910000 14610229010
## 590 RIVER FLOOD 5118945500 5029459000 10148404500
## 427 ICE STORM 3944927860 5022113500 8967041360
barplot(
top_damage$TOTAL_DAMAGE[1:10],
names.arg = top_damage$EVTYPE[1:10],
las = 2,
cex.names = 0.7,
main = "Top 10 Weather Events by Economic Damage",
ylab = "Total Damage (USD)"
)
This analysis demonstrates that severe weather events have significant impacts on both public health and the economy in the United States. Tornadoes were responsible for the highest numbers of fatalities and injuries, while floods caused the greatest economic losses. These findings highlight the importance of disaster preparedness and effective risk management to reduce future impacts.