In this analysis, National Weather Service storm data is analyzed in regards to which types of storms have the most human health and economic consequences in the United States. The bulk of this analysis is preparing the data into a set of storm data that is ready for analysis. Then, the average and the overall (sum) of impacts for the storm types are calculated. The most impactful storms are then displayed graphically.
The csv file is first downloaded from the web, then read into R. The property damage and crop damage estimates are a combination of two columns. One indicates the multiplier (exp) which is generally in k (1000), m(1e6), b(1e9). Though other fields exist. So first property and crop damage values are calculated to create two new columns. Next, the EVTYPE variable is cleaned up, as there are almost 1000 levels in the dataset. First summaries of storms are removed, then the EVTYPEs are matched to alternate titles/mispellings/etc. A large number are nondescript (i.e. Record/Other), these are left in the dataset though they are not included in the types from the documentation.
# download.file(url = 'https://d396qusza40orc.cloudfront.net/repdata%2Fdata%2FStormData.csv.bz2', destfile = 'storms.bz2')
storms <- read.csv(bzfile('storms.bz2') )
# convert storm dates to dates
storms$BGN_DATE <- as.Date(storms$BGN_DATE, format = '%m/%d/%Y' )
# convert the amounts to numeric values
# 1 for those with ?/+/-/empty multipliers
convert <- function(x){
x <- as.character(x)
if(x == '' | x == ' ') return (1)
if(grepl(x, '?+-')) return (1)
if(grepl(x,'0123456789') ) return(10^as.numeric(x))
if(x == 'h' | x == 'H') return(100)
if(x == 'B') return (1e9)
if(x == 'k' | x == 'K') return (1000)
if(x == 'm' | x == 'M') return (1e6)
}
storms$PROPDMGCALC <- storms$PROPDMG * sapply(storms$PROPDMGEXP, convert)
storms$CROPDMGCALC <- storms$CROPDMG * sapply(storms$CROPDMGEXP, convert)
# Remove the summaries of storms and the unuseful entries
storms <- storms[-which(grepl('SUMMARY', toupper(storms$EVTYPE) ) ), ]
storms <- storms[-which(storms$EVTYPE %in% c("APACHE COUNTY",
"HIGH", "NORMAL PRECIPITATION", "SOUTHEAST", "EXCESSIVE",
"?", "Metro Storm, May 26", "No Severe Weather", "NONE", "MONTHLY TEMPERATURE",
"MONTHLY PRECIPITATION", "RED FLAG CRITERIA", "NORTHERN LIGHTS") ), ]
# Make EVTYPEs consistent for all of those > 100k crop or property damage
# or those that caused any injuries or death
# involves replacing source values to target values
# Add column with the characters from evtype
storms$EVTYPE2 <- as.character(storms$EVTYPE)
# create a dataframe with the desired values to change
# and the values to change to
EvSource <- c('FLASH FLOOD', 'FLD', 'WARM', 'HEAT WAVE', 'ICE', 'FREEZ',
'SQUALL', 'MARINE TH', 'RIP CURRENT', 'SNOW',
'THUND', 'TSTM', 'TORNA',
'TROPICAL STORM', 'WATERSPOUT', 'FIRE', 'WINTER WEATHER',
'WINTRY MIX', 'WINTER STORM', 'HURRICANE', 'TYPHOON',
'HIGH WIND', 'HIGH SURF', 'EXTREME COLD', 'COLD', 'GLAZE',
'HEAVY SURF', 'HIGH WIND', 'LANDSLIDE', 'MARINE MISHAP',
'MIXED PRECIP', 'RECORD HEAT', 'EXCESSIVE HEAT',
'STORM SURGE', 'COASTAL', 'COLD', 'COOL', 'FOG',
'DRY', 'FROST', 'WETNESS', 'EXTREME WINDCHILL', 'FLOOD',
'HAIL', 'HEAVY RAIN', 'HEAVY SURF', 'EXCESSIVE RAINFALL',
'ASTRONOMICAL', 'AVALAN', 'DROWN', 'DUST DE',
'EXTREME HEAT', 'FUNNEL', 'GUSTY', 'HAZARDOUS SURF',
'HEAVY SEAS', 'HIGH SEAS', 'HIGH SWELLS', 'HIGH WATER',
'HIGH WAVES', 'HYPOTHERMIA', 'HYPERTHERMIA',
'ICY ROADS', 'LIGHTNING', 'LOW TEMPERATURE', 'MARINE ACCIDENT',
'MUDSLIDE', 'WIND DAMAGE', 'RAIN/WIND', 'RAPIDLY RISING WATER',
'ROGUE WAVE', 'ROUGH SEAS', 'ROUGH SURF',
'STRONG WIND', 'TORRENTIAL', 'WHIRLWIND',
'RAIN', 'HEAVY MIX', 'HEAVY PRECIPITATION', 'LANDSLUMP',
'MICROBURST WINDS', 'SLIDE', 'STORM FORCE WINDS',
'THUNDERSTORM WIND', 'UNSEASONAL RAIN', 'WIND AND WAVE',
'WALL CLOUD', 'LIGHTING', 'BLIZZARD', 'HIGH TIDES',
'RECORD HIGH TEMPER', 'SEVERE TURBULENCE', 'HEAVY PRECIP',
'SPOUT', 'BURST', 'GUST', 'UNSEASONABLY WET',
'SMALL', 'EXTREME WIND', 'GRADIENT', 'CHILL',
'BELOW NORMAL PRE', 'DAM ', 'THUDERSTORM WINDS',
'THUNERSTO', 'FLASH FLO', 'DROUGHT', 'DUSTSTORM',
'HOT PATTERN', 'WINTER MIX', 'VOLCANIC', 'ABNORMALLY WET',
'EXTREMELY WET', 'VOG', 'SMOKE', 'SLEET', 'DRIEST',
'HOT', 'WINTERY', 'RECORD HIGH', 'WET ',
'SAHARAN DUST', 'TUNDERSTORM WIND', 'LIGNTNING', 'HIGH TEMPERATURE',
'RECORD COLD', 'RECORD HIGH', 'TORNDAO',
'EROSIN', 'HEAVY SHOWER', 'EXCESSIVE PRECIPITATION',
'HEAVY SWELLS', 'BLOW-OUT TIDE', 'SWELLS',
'LOW TEMP', 'RECORD LOW', 'BLOWING DUST', 'OTHER',
'REMNANTS', 'RECORD PRECIP', 'RECORD',
'EROSION', 'EXTREME CLD')
EvTarget <- c('FLASH FLOOD', 'FLOOD', 'HEAT', 'HEAT', 'ICE STORM', 'ICE STORM',
'HEAVY RAIN', 'MARINE TS', 'RIP CURRENT', 'HEAVY SNOW',
'THUNDERSTORM WINDS', 'THUNDERSTORM WIND', 'TORNADO',
'TROPICAL STORM', 'WATERSPOUT', 'WILDFIRE', 'WINTER WEATHER',
'WINTER WEATHER', 'WINTER STORM', 'HURRICANE', 'HURRICANE',
'HIGH WIND', 'HIGH SURF', 'EXTREME CLD', 'COLD', 'ICE STORM',
'HIGH SURF', 'HIGH WIND', 'DEBRIS FLOW', 'MARINE TS',
'ICE STORM', 'EXCESSIVE HEAT','EXCESSIVE HEAT',
'STORM SURGE', 'COASTAL FLOOD', 'COLD', 'COLD', 'FOG',
'DROUGHT', 'FROST', 'FLOOD', 'EXTREME COLD', 'FLOOD',
'HAIL', 'HEAVY RAIN', 'HIGH SURF', 'HEAVY RAIN',
'ASTRONOMICAL LOW TIDE', 'AVALANCHE', 'FLOOD', 'DUST DEVIL',
'EXCESSIVE HEAT', 'TORNADO', 'HIGH WIND', 'HIGH SURF',
'HIGH SURF', 'HIGH SURF', 'HIGH SURF', 'HIGH SURF',
'HIGH SURF', 'EXTREME COLD', 'EXCESSIVE HEAT',
'ICE STORM', 'LIGHTNING', 'COLD', 'MARINE STRONG WIND',
'DEBRIS FLOW', 'STRONG WIND', 'HEAVY RAIN', 'FLASH FLOOD',
'MARINE STRONG WIND', 'MARINE STRONG WIND', 'MARINE STRONG WIND',
'STRONG WIND', 'HEAVY RAIN', 'DUST STORM',
'HEAVY RAIN', 'WINTER STORM', 'HEAVY RAIN', 'DEBRIS FLOW',
'HIGH WIND', 'DEBRIS FLOW', 'STRON WIND',
'THUNDERSTORM WIND', 'HEAVY RAIN', 'MARINE HIGH WIND',
'FOG', 'LIGHTNING', 'BLIZZARD', 'HIGH SURF',
'HEAT', 'MARINE STRONG WIND', 'HEAVY RAIN',
'WATERSPOUT', 'HIGH WIND', 'HIGH WIND', 'HEAVY RAIN',
'FLASH FLOOD', 'EXTREME CLD', 'HIGH WIND', 'EXTREME CLD',
'DROUGHT', 'FLOOD', 'THUNDERSTORM WIND',
'THUNDERSTORM WIND', 'FLASH FLOOD', 'DROUGHT', 'DUST STORM',
'HEAT', 'WINTER STORM', 'VOLCANIC ASH', 'HEAVY RAIN',
'HEAVY RAIN', 'FOG', 'DENSE SMOKE', 'SLEET', 'DROUGHT',
'HEAT', 'WINTER STORM', 'HEAT', 'HEAVY RAIN',
'DUST STORM', 'THUNDERSTORM WIND', 'LIGHTNING', 'HEAT',
'COLD', 'HEAT', 'TORNADO',
'DEBRIS FLOW', 'HEAVY RAIN', 'HEAVY RAIN',
'MARINE HIGH WIND', 'HIGH SURF', 'HIGH SURF',
'COLD', 'COLD', 'DUST STORM', 'OTHER',
'HEAVY RAIN', 'HEAVY RAIN', 'RECORD TEMP',
'DEBRIS FLOW', 'EXTREME COLD')
EvDF <- data.frame(Source = EvSource,
Target = EvTarget )
# now replace the source values to target values
for(i in 1:length(EvDF[,1])){
storms$EVTYPE2 <- replace(storms$EVTYPE2,
which(grepl(EvDF[i,1], toupper(storms$EVTYPE2) ) ),
as.character(EvDF[i,2]) )
}
# because Wind is frequently in the other types, do these separately
storms$EVTYPE2[storms$EVTYPE2 %in% c('WIND', 'WIND STORM', 'WINDS',
'WND', 'WIND GUSTS', 'WIND ADVISORY',
'STRON WIND', 'HIGH WINDS',
' WIND', 'Wind') ] <- 'HIGH WIND'
# turn back into factor levels
storms$EVTYPE2 <- factor(storms$EVTYPE2)
# types of storms giving the highest property damage amounts or most human
# health problems
# these are the event types that are most necessary to collapse for analysis
summary(factor(storms$EVTYPE2[which(storms$CROPDMGCALC > 1e5 |
storms$PROPDMGCALC > 1e5)]) )
## ASTRONOMICAL LOW TIDE AVALANCHE BLIZZARD
## 6 6 101
## COLD DEBRIS FLOW DROUGHT
## 13 65 201
## DUST STORM EXCESSIVE HEAT EXTREME COLD
## 14 8 69
## FLOOD FOG FROST
## 8529 44 7
## HAIL HEAT HEAVY RAIN
## 3447 17 229
## HEAVY SNOW HIGH SURF HIGH WIND
## 442 32 1144
## HURRICANE ICE STORM LIGHTNING
## 188 448 1472
## MARINE HIGH WIND SEICHE STORM SURGE
## 1 1 112
## STRONG WIND THUNDERSTORM WIND TORNADO
## 117 5224 13873
## TROPICAL DEPRESSION TROPICAL STORM TSUNAMI
## 2 236 10
## VOLCANIC ASH WATERSPOUT WILDFIRE
## 2 9 517
## WINTER STORM WINTER WEATHER
## 471 36
summary(factor(storms$EVTYPE2[which(storms$FATALITIES > 0 |
storms$INJURIES > 0)]))
## AVALANCHE BLIZZARD COLD DEBRIS FLOW
## 240 86 127 24
## DROUGHT DUST DEVIL DUST STORM EXCESSIVE HEAT
## 16 15 46 697
## EXTREME COLD FLASH FLOOD FLOOD FOG
## 230 1 1460 126
## FROST HAIL HEAT HEAVY RAIN
## 1 291 250 129
## HEAVY SNOW HIGH SURF HIGH WIND HURRICANE
## 218 169 681 71
## ICE STORM LIGHTNING MARINE TS OTHER
## 166 3307 13 1
## RIP CURRENT SLEET STORM SURGE STRONG WIND
## 639 1 13 259
## THUNDERSTORM WIND TORNADO TROPICAL STORM TSUNAMI
## 4024 7936 43 2
## WATERSPOUT WILDFIRE WINTER STORM WINTER WEATHER
## 5 333 229 79
# The highest property damage appears to be an error
# They used a B where it should have been a M (The Remarks field confirms)
# Expensive, just not 115 billion dollars worth
storms[which(storms$PROPDMGCALC > 1e11), ]
## STATE__ BGN_DATE BGN_TIME TIME_ZONE COUNTY COUNTYNAME STATE
## 605953 6 2006-01-01 12:00:00 AM PST 55 NAPA CA
## EVTYPE BGN_RANGE BGN_AZI BGN_LOCATI END_DATE END_TIME
## 605953 FLOOD 0 COUNTYWIDE 1/1/2006 0:00:00 07:00:00 AM
## COUNTY_END COUNTYENDN END_RANGE END_AZI END_LOCATI LENGTH WIDTH F
## 605953 0 NA 0 COUNTYWIDE 0 0 NA
## MAG FATALITIES INJURIES PROPDMG PROPDMGEXP CROPDMG CROPDMGEXP WFO
## 605953 0 0 0 115 B 32.5 M MTR
## STATEOFFIC ZONENAMES LATITUDE LONGITUDE LATITUDE_E
## 605953 CALIFORNIA, Western 3828 12218 3828
## LONGITUDE_
## 605953 12218
## REMARKS
## 605953 Major flooding continued into the early hours of January 1st, before the Napa River finally fell below flood stage and the water receeded. Flooding was severe in Downtown Napa from the Napa Creek and the City and Parks Department was hit with $6 million in damage alone. The City of Napa had 600 homes with moderate damage, 150 damaged businesses with costs of at least $70 million.
## REFNUM PROPDMGCALC CROPDMGCALC EVTYPE2
## 605953 605943 1.15e+11 32500000 FLOOD
storms$PROPDMGEXP[which(storms$PROPDMGCALC > 1e11)] <- 'M'
storms$PROPDMGCALC[which(storms$PROPDMGCALC > 1e11)] <- storms$PROPDMGCALC[which(storms$PROPDMGCALC > 1e11)]/1000
The total impact of each storm type is calculated by summing all fatalities and injuries and taking the mean of all fatatlities and injuries. This gives an overall impact and an impact per storm for each type. This analysis shows that tornadoes are by far the most deadly overall, but tsunamis are the most deadly per each storm.
When it comes to financial impacts, the same type of analysis is performed, taking the sums and means for each storm type, and this analysis shows that both overall and per storm, hurricanes and the associated storm surges are by far the most costly types of storms. The next highest are tropical storms, then tsunamis. Other main offenders are wild fires, frost, ice storms, and droughts.
## Question 1, which type is the most dangerous to human health
totalDeaths <- tapply(storms$FATALITIES, storms$EVTYPE2, sum)
totalInjuries <- tapply(storms$INJURIES, storms$EVTYPE2, sum)
meanDeaths <- tapply(storms$FATALITIES, storms$EVTYPE2, mean, na.rm =T)
meanInjuries <- tapply(storms$INJURIES, storms$EVTYPE2, mean, na.rm =T)
par(mfrow = c(2,1), mar =c(3,2,2,1) )
barplot(totalInjuries[rev(order(totalInjuries))][1:5],
main = 'Total Injuries Since 1950 (Top 5)')
barplot(meanInjuries[rev(order(meanInjuries))][1:5],
main = 'Average Injuries Per Event Since 1950 (Top 5)')
barplot(totalDeaths[rev(order(totalDeaths))][1:5],
main = 'Total Deaths Since 1950 (Top 5)')
barplot(meanDeaths[rev(order(meanDeaths))][1:5],
main = 'Average Deaths Per Event Since 1950 (Top 5)')
health <- data.frame(totalDeaths = totalDeaths, totalInjuries = totalInjuries,
meanDeaths = meanDeaths, meanInjuries = meanInjuries)
# The total and mean deaths and injuries by storm type, ordered by total deaths caused by type
health[rev(order(health$totalDeaths)) ,]
## totalDeaths totalInjuries meanDeaths meanInjuries
## TORNADO 5636 91410 8.327423e-02 1.350620567
## EXCESSIVE HEAT 2021 6730 1.122778e+00 3.738888889
## FLOOD 1558 8685 1.808957e-02 0.100839458
## HEAT 1158 2513 9.641965e-01 2.092422981
## LIGHTNING 817 5231 5.182695e-02 0.331832022
## THUNDERSTORM WIND 745 9518 2.250687e-03 0.028754418
## RIP CURRENT 577 529 7.425997e-01 0.680823681
## HIGH WIND 321 1564 1.428190e-02 0.069585335
## EXTREME COLD 312 260 1.625000e-01 0.135416667
## AVALANCHE 225 170 5.813953e-01 0.439276486
## WINTER STORM 217 1353 1.894700e-02 0.118134986
## HIGH SURF 170 253 1.562500e-01 0.232536765
## HEAVY SNOW 160 1119 9.142335e-03 0.063939203
## COLD 156 61 1.895504e-01 0.074119077
## STRONG WIND 138 340 3.571429e-02 0.087991718
## HURRICANE 135 1333 4.515050e-01 4.458193980
## ICE STORM 128 2475 3.073967e-02 0.594380403
## HEAVY RAIN 104 315 8.674618e-03 0.026274085
## BLIZZARD 101 805 3.707783e-02 0.295521292
## WILDFIRE 90 1608 2.122642e-02 0.379245283
## FOG 80 1076 4.333694e-02 0.582881907
## TROPICAL STORM 66 383 9.469154e-02 0.549497848
## WINTER WEATHER 62 615 7.516063e-03 0.074554491
## DEBRIS FLOW 44 55 6.717557e-02 0.083969466
## TSUNAMI 33 129 1.650000e+00 6.450000000
## STORM SURGE 24 43 5.867971e-02 0.105134474
## DUST STORM 23 440 5.239180e-02 1.002277904
## MARINE TS 17 31 2.923977e-03 0.005331957
## HAIL 15 1371 5.185252e-05 0.004739320
## WATERSPOUT 3 29 7.790184e-04 0.007530512
## DROUGHT 3 33 1.076813e-03 0.011844939
## SLEET 2 0 2.816901e-02 0.000000000
## DUST DEVIL 2 43 1.333333e-02 0.286666667
## FROST 1 3 1.666667e-02 0.050000000
## FLASH FLOOD 1 0 5.000000e-02 0.000000000
## WAKE LOW WIND 0 0 0.000000e+00 0.000000000
## VOLCANIC ASH 0 0 0.000000e+00 0.000000000
## TROPICAL DEPRESSION 0 0 0.000000e+00 0.000000000
## SEICHE 0 0 0.000000e+00 0.000000000
## RECORD TEMP 0 0 0.000000e+00 0.000000000
## OTHER 0 4 0.000000e+00 0.076923077
## MILD PATTERN 0 0 0.000000e+00 0.000000000
## MARINE STRONG WIND 0 0 0.000000e+00 0.000000000
## MARINE HIGH WIND 0 0 0.000000e+00 0.000000000
## DENSE SMOKE 0 0 0.000000e+00 0.000000000
## ASTRONOMICAL LOW TIDE 0 0 0.000000e+00 0.000000000
# Per Recorded Event, Tsunami and Heat are the most deadly
# overall Tornadoes are the worst
totalCost <- tapply(storms$CROPDMGCALC, storms$EVTYPE2, sum, na.rm =T) +
tapply(storms$PROPDMGCALC, storms$EVTYPE2, sum, na.rm =T)
avgCost <- tapply(storms$CROPDMGCALC, storms$EVTYPE2, mean, na.rm =T) +
tapply(storms$PROPDMGCALC, storms$EVTYPE2, mean, na.rm =T)
par(mfrow = c(2,1), mar =c(3,2,2,1) )
barplot(totalCost[rev(order(totalCost))][1:5],
main = 'Total Cost of Crop Plus Property Damage for Each Storm Type (top 5)')
barplot(avgCost[rev(order(avgCost))][1:5],
main = 'Average Cost per Recorded Event of Crop Plus Property\nDamage for Each Storm Type (top 5)')
totalProp <- tapply(storms$PROPDMGCALC, storms$EVTYPE2, sum, na.rm =T)
totalCrop <- tapply(storms$CROPDMGCALC, storms$EVTYPE2, sum, na.rm =T)
avgProp <- tapply(storms$PROPDMGCALC, storms$EVTYPE2, mean, na.rm =T)
avgCrop <- tapply(storms$CROPDMGCALC, storms$EVTYPE2, mean, na.rm =T)
overallCosts <- data.frame(totalCost, totalProp, totalCrop,
avgCost, avgProp, avgCrop)
# here are the total and average costs per storm type, ordered by the total cost (crop + property)
overallCosts[rev(order(totalCost)), ]
## totalCost totalProp totalCrop avgCost
## HURRICANE 90872527810 85356410010 5516117800 3.039215e+08
## FLOOD 65896248685 53370701485 12525547200 7.651056e+05
## TORNADO 57418474547 57003513027 414961520 8.483817e+05
## STORM SURGE 47965579000 47964724000 855000 1.172753e+08
## HAIL 19024452136 15977564513 3046887623 6.576438e+04
## DROUGHT 15025419600 1052838600 13972581000 5.393187e+06
## THUNDERSTORM WIND 14058724288 12784560300 1274163988 4.247220e+04
## ICE STORM 10929957410 4013782110 6916175300 2.624870e+06
## WILDFIRE 8904910130 8501628500 403281630 2.100215e+06
## TROPICAL STORM 8409286550 7714390550 694896000 1.206497e+07
## WINTER STORM 6783246251 6750802251 32444000 5.922681e+05
## HIGH WIND 6704513053 6016694603 687818450 2.982965e+05
## HEAVY RAIN 4024363000 3219710200 804652800 3.356713e+05
## EXTREME COLD 1407213400 77190400 1330023000 7.329236e+05
## HEAVY SNOW 1151444790 1016761690 134683100 6.579309e+04
## LIGHTNING 942511520 930419430 12092090 5.978886e+04
## BLIZZARD 771373950 659313950 112060000 2.831769e+05
## EXCESSIVE HEAT 505276480 7868700 497407780 2.807092e+05
## HEAT 419528550 12457050 407071500 3.493160e+05
## DEBRIS FLOW 347513100 327496100 20017000 5.305544e+05
## STRONG WIND 248253070 178244570 70008500 6.424769e+04
## COLD 160386500 58644000 101742500 1.948803e+05
## TSUNAMI 144082000 144062000 20000 7.204100e+06
## HIGH SURF 117040650 115540650 1500000 1.075741e+05
## FROST 108015000 15000 108000000 1.800250e+06
## WINTER WEATHER 42310500 27310500 15000000 5.129167e+03
## FOG 22829500 22829500 0 1.236701e+04
## ASTRONOMICAL LOW TIDE 9745000 9745000 0 3.518051e+04
## WATERSPOUT 9571700 9571700 0 2.485510e+03
## DUST STORM 8681000 5581000 3100000 1.977449e+04
## AVALANCHE 3721800 3721800 0 9.617054e+03
## TROPICAL DEPRESSION 1737000 1737000 0 2.895000e+04
## OTHER 1089900 55500 1034400 2.095962e+04
## MARINE HIGH WIND 1015000 1015000 0 5.075000e+05
## SEICHE 980000 980000 0 4.666667e+04
## DUST DEVIL 718630 718630 0 4.790867e+03
## VOLCANIC ASH 500000 500000 0 1.724138e+04
## MARINE TS 486400 436400 50000 8.366013e+01
## RIP CURRENT 163000 163000 0 2.097812e+02
## DENSE SMOKE 100000 100000 0 4.761905e+03
## MARINE STRONG WIND 50000 50000 0 5.000000e+04
## FLASH FLOOD 10050 10050 0 5.025000e+02
## WAKE LOW WIND 0 0 0 0.000000e+00
## SLEET 0 0 0 0.000000e+00
## RECORD TEMP 0 0 0 0.000000e+00
## MILD PATTERN 0 0 0 0.000000e+00
## avgProp avgCrop
## HURRICANE 2.854729e+08 1.844855e+07
## FLOOD 6.196745e+05 1.454311e+05
## TORNADO 8.422505e+05 6.131228e+03
## STORM SURGE 1.172732e+08 2.090465e+03
## HAIL 5.523180e+04 1.053259e+04
## DROUGHT 3.779033e+05 5.015284e+06
## THUNDERSTORM WIND 3.862288e+04 3.849322e+03
## ICE STORM 9.639246e+05 1.660945e+06
## WILDFIRE 2.005101e+06 9.511359e+04
## TROPICAL STORM 1.106799e+07 9.969813e+05
## WINTER STORM 5.894353e+05 2.832795e+03
## HIGH WIND 2.676942e+05 3.060235e+04
## HEAVY RAIN 2.685554e+05 6.711592e+04
## EXTREME COLD 4.020333e+04 6.927203e+05
## HEAVY SNOW 5.809735e+04 7.695737e+03
## LIGHTNING 5.902179e+04 7.670699e+02
## BLIZZARD 2.420389e+05 4.113803e+04
## EXCESSIVE HEAT 4.371500e+03 2.763377e+05
## HEAT 1.037223e+04 3.389438e+05
## DEBRIS FLOW 4.999940e+05 3.056031e+04
## STRONG WIND 4.612955e+04 1.811814e+04
## COLD 7.125638e+04 1.236239e+05
## TSUNAMI 7.203100e+06 1.000000e+03
## HIGH SURF 1.061955e+05 1.378676e+03
## FROST 2.500000e+02 1.800000e+06
## WINTER WEATHER 3.310765e+03 1.818402e+03
## FOG 1.236701e+04 0.000000e+00
## ASTRONOMICAL LOW TIDE 3.518051e+04 0.000000e+00
## WATERSPOUT 2.485510e+03 0.000000e+00
## DUST STORM 1.271298e+04 7.061503e+03
## AVALANCHE 9.617054e+03 0.000000e+00
## TROPICAL DEPRESSION 2.895000e+04 0.000000e+00
## OTHER 1.067308e+03 1.989231e+04
## MARINE HIGH WIND 5.075000e+05 0.000000e+00
## SEICHE 4.666667e+04 0.000000e+00
## DUST DEVIL 4.790867e+03 0.000000e+00
## VOLCANIC ASH 1.724138e+04 0.000000e+00
## MARINE TS 7.506020e+01 8.599931e+00
## RIP CURRENT 2.097812e+02 0.000000e+00
## DENSE SMOKE 4.761905e+03 0.000000e+00
## MARINE STRONG WIND 5.000000e+04 0.000000e+00
## FLASH FLOOD 5.025000e+02 0.000000e+00
## WAKE LOW WIND 0.000000e+00 0.000000e+00
## SLEET 0.000000e+00 0.000000e+00
## RECORD TEMP 0.000000e+00 0.000000e+00
## MILD PATTERN 0.000000e+00 0.000000e+00
# so hurricanes are the most costly both per storm and as a sum
# the second (storm surge is also linked directly to hurricanes)
Tornadoes have caused the largest number of deaths and injuries in this dataset. The most deadly type of storm for each type appears to be tsunamis. There is a wide variety of storms that are the next most costly to human helath, but heat seems to be relatively dangerous as well.
In terms of cost, the types of storms that are the most costly are hurricanes, and associated storm surges, as well as tropical storms. Floods and tornadoes are also very costly overall. Though not nearly as costly on a per storm basis.