Analysis of Health and Economic Effects of Data

Synopsis:

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.

Data Processing

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

Results

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)

Summary

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.