Synopsis

The National Climatic Data Center (NCDC) regularly receives storm data from the National Weather Service (NWS). The NWS receives their information from a variety of sources, which include but are not limited to: county, state and federal emergency management officials, local law enforcement officials, skywarn spotters, NWS damage surveys, newspaper clipping services, the insurance industry and the general public. NWS Headquarters (NWSHQ) uses several algorithms to prepare the storm data into the integrated database. This provides a rich source of data to identify the primary human and economic impacts due to climatic events in the United States. In this report we simplify the classification of events to fifteen primary categories (and an “other” category) and then identify the types of events that have the most impact. As will be shown in Results, there are three primary categories and a fourth “super category” that account for greater than 80% of fatalities, injuries, property damage, and crop damage. These are floods, thunderstorms, tornados, and “extreme temperatures”; where “extreme temperatures”" is comprised of heat (responsible for human injuries and fatalities) and freeze (responsible for property and crop damage.) Between 1950 and 2011 these events were responsible for more than 124,000 injuries, almost 12,000 fatalities, $1.3B in crop damage and $9.7B in property damage.

Data Processing

This assignment uses data available as a compressed ‘.CSV’ file on the Coursera web site under the Reproducible Research class - assignment number 2. Though it could be downloaded and uncompressed, allowing one to start with a simple locally available file, it is also possible to automatically download it and read it in directly from the compressed file.

setInternet2(use = TRUE)
url <- "https://d396qusza40orc.cloudfront.net/repdata%2Fdata%2FStormData.csv.bz2"
file <- "StormData.csv.bz2"
download.file(url, file, quiet = TRUE, mode = "wb")
## Warning in download.file(url, file, quiet = TRUE, mode = "wb"): downloaded
## length 49177144 != reported length 49177144
data <- read.csv(file)

This results in a data table containing 902297 observations of 37 variables. These data are defined in the “National Weather Service Storm Data Documentation” and the “National Climatic Data Center Storm Events FAQ” but we care only about the type of events (EVTYPE) and the impact of the events on people (FATALITIES and INJURIES) and the economy (PROPDMG and CROPDMG) for this assignment.

Unfortunately, the event types are poorly categorized due to misspellings, different mixtures of upper and lower case letters, variations such as “Flood” versus “Flooding”, extra spaces, etc. However, rather than tring to reduce the 985 event types to a manageable list first, it is easier to reduce the large data table to four smaller, impact specific tables and then adjust the resulting shorter lists of event types.

We reduce the original data table to four simple data tables that let us evaluate fatalities, injuries, property damage, and crop damage as follows:

fatalities <- data[data$FATALITIES > 0, c("EVTYPE", "FATALITIES")]
fatalities$EVTYPE <- fatalities$EVTYPE[, drop = TRUE]
injuries <- data[data$INJURIES > 0, c("EVTYPE", "INJURIES")]
injuries$EVTYPE <- injuries$EVTYPE[, drop = TRUE]
pdamage <- data[data$PROPDMG > 0, c("EVTYPE", "PROPDMG")]
pdamage$EVTYPE <- pdamage$EVTYPE[, drop = TRUE]
cdamage <- data[data$CROPDMG > 0, c("EVTYPE", "CROPDMG")]
cdamage$EVTYPE <- cdamage$EVTYPE[, drop = TRUE]

tf <- fatalities
tf$INJURIES <- NA
tf$PROPDMG <- NA
tf$CROPDMG <- NA
ti <- injuries
ti$FATALITIES <- NA
ti$PROPDMG <- NA
ti$CROPDMG <- NA
tp <- pdamage
tp$FATALITIES <- NA
tp$INJURIES <- NA
tp$CROPDMG <- NA
tc <- cdamage
tc$FATALITIES <- NA
tc$INJURIES <- NA
tc$PROPDMG <- NA
all <- rbind(tf, ti, tp, tc)
all$EVTYPE <- all$EVTYPE[, drop = TRUE]

In the data there are 6974 events resulting in fatalities, 17604 events resulting in injuries, 22099 events resulting in crop damage, and 239174 events resulting in property damage.

As noted previously, in the original data there are 985 event types. For crop damage there are 136 event types. For injuries there are 158 event types. For fatalities there are 168 event types. Finally, for property damage there are 406 event types. With a lot of overlap between these, there are a total of 488 raw categories.

While this represents a significant reduction, there are still many issues with misspelling, case sensitivity, slight variations, etc. so we will combine event types and reduce them to 16 categories:

Given the variations in event types, there is no automated way to identify all the event types that go into each of the reduced types. Using an iterative, manual process, we identified key ‘words’ that could be used to extract the appropriate sub-groups. Once these were known, the category compression process could be automated and the code for creating these categories is shown below:

simplify <- function(df) {
    df0 <- df
    event <- c("slide", "coastal_storm", "cold", "drought", "flood", "freeze",
               "heat", "heavy_rain", "maritime", "hurricane", "tornado",
               "thunderstorm", "fire", "winter_storm", "wind")
    key <- c("avalan|falling|slide",
             "beach|coast|cstl|high wave|rip|rogue|sur(f|ge)|tid(al|e)|tsunami",
             "cold|hypothermia|low temp|wind(| )chill",
             "drought|dry|dust",
             "dam break|fld|flood|(high|rising) water",
             "^hail|freez|frost|glaze|ic(e|y)|sleet|small hail",
             "heat|hyperthermia|warm",
             "heavy (precipitation|shower)|rain",
             "(heavy|high) swells|marine|sea",
             "hurricane|tropical|typhoon",
             "funnel clou|torn(ad|da)o|waterspout|whirlwind",
             "^tstm|lig(h|n)t(|n)ing|t(|h)u(|n)(|d)(e|ee)r(|e)(|s)t(or|ro)m",
             "fire|smoke",
             "blizzard|mix|snow|wint(er|ry)",
             "wind")
    for (index in 1:15) {
        df0$EVENT <- event[index]
        dft <- df0[grepl(key[index], df0$EVTYPE, ignore.case = TRUE),]
        if (index == 1) {
            df1 <- dft
        } else {
            df1 <- rbind(df1, dft)
        }
        df0 <- df0[!grepl(key[index], df0$EVTYPE, ignore.case = TRUE),]
    }
    df0$EVENT <- "other"
    df1 <- rbind(df1, df0)
    ## special cases handled ad-hoc
    df1$EVENT[df1$EVTYPE == "WIND AND WAVE"] <- "coastal_storm"
    df1$EVENT[df1$EVTYPE == "COLD AIR TORNADO"] <- "tornado"
    df1$EVENT[df1$EVTYPE == "LATE SEASON SNOW"] <- "winter_storm"
    return(df1)
}

fatalities <- simplify(fatalities)
injuries <- simplify(injuries)
pdamage <- simplify(pdamage)
cdamage <- simplify(cdamage)

Results

The presentation of the results in this document require the ‘qcc’ package citation("qcc"). If this is not installed in your environment, you will need to execute ‘install.packages(“qcc”)’ before attempting to recreate the pareto charts.

The most significant categories for human impact are as follows:

library("qcc")
## Warning: package 'qcc' was built under R version 3.1.3
## Package 'qcc', version 2.6
## Type 'citation("qcc")' for citing this R package in publications.
tfatalities <- tapply(fatalities$FATALITIES, fatalities$EVENT, sum) / 1000
tinjuries <- tapply(injuries$INJURIES, injuries$EVENT, sum) / 1000
par(mfrow = c(1,2), cex = 0.75, oma = c(2, 0, 0, 0))
pareto.chart(tfatalities, main = "Fatalities by Event Type", 
             ylab = "Thousands of Fatalities", col = topo.colors(16))
##                
## Pareto chart analysis for tfatalities
##                 Frequency Cum.Freq. Percentage Cum.Percent.
##   tornado           5.665     5.665 37.4050842     37.40508
##   heat              3.144     8.809 20.7593265     58.16441
##   flood             1.551    10.360 10.2410036     68.40541
##   thunderstorm      1.528    11.888 10.0891383     78.49455
##   coastal_storm     0.806    12.694  5.3218884     83.81644
##   winter_storm      0.526    13.220  3.4730934     87.28953
##   cold              0.483    13.703  3.1891713     90.47871
##   wind              0.424    14.127  2.7996038     93.27831
##   slide             0.270    14.397  1.7827666     95.06108
##   hurricane         0.201    14.598  1.3271707     96.38825
##   freeze            0.143    14.741  0.9442060     97.33245
##   heavy_rain        0.105    14.846  0.6932981     98.02575
##   fire              0.090    14.936  0.5942555     98.62001
##   other             0.081    15.017  0.5348300     99.15484
##   maritime          0.066    15.083  0.4357874     99.59062
##   drought           0.062    15.145  0.4093760    100.00000
abline(h = sum(tfatalities)*0.8, col = "red", lwd = 3)
pareto.chart(tinjuries, main = "Injuries by Event Type", 
             ylab = "Thousands of Injuries", col = topo.colors(16))
##                
## Pareto chart analysis for tinjuries
##                 Frequency Cum.Freq.  Percentage Cum.Percent.
##   tornado          91.439    91.439 65.06817147     65.06817
##   thunderstorm     14.740   106.179 10.48901287     75.55718
##   heat              9.228   115.407  6.56666287     82.12385
##   flood             8.675   124.082  6.17314699     88.29699
##   winter_storm      3.950   128.032  2.81082774     91.10782
##   freeze            3.822   131.854  2.71974268     93.82756
##   wind              1.848   133.702  1.31504042     95.14261
##   hurricane         1.716   135.418  1.22110896     96.36371
##   fire              1.608   137.026  1.14425595     97.50797
##   other             1.081   138.107  0.76924172     98.27721
##   coastal_storm     0.959   139.066  0.68242628     98.95964
##   drought           0.531   139.597  0.37786064     99.33750
##   cold              0.325   139.922  0.23127064     99.56877
##   heavy_rain        0.282   140.204  0.20067175     99.76944
##   slide             0.227   140.431  0.16153364     99.93097
##   maritime          0.097   140.528  0.06902539    100.00000
abline(h = sum(tinjuries)*0.8, col = "red", lwd = 3)
mtext("Figure 1: Human Impact of Weather Events", outer = TRUE, 
      side = 1, cex = 1.5)

As shown in Figure 1, the greatest impacts in terms of human injury and loss of life are from: tornado, heat, flood, and thunderstorm. These four categories account for more than 80% of both fatalities and injuries. The absolute values of fatalities and injuries are based on the assumption that the original raw data counts individual fatalities and injuries. This assumption is necessary as it is not clearly defined in the source documentation.

Likewise, the most significant categories for economic impact are as follows:

tpdamage <- tapply(pdamage$PROPDMG, pdamage$EVENT, sum) / 1000
tcdamage <- tapply(cdamage$CROPDMG, cdamage$EVENT, sum) / 1000
par(mfrow = c(1,2), cex = 0.75, oma = c(2, 0, 0, 0))
pareto.chart(tpdamage, main = "Property Damage by Event Type",
             ylab = "Damage (Millions $)", col = topo.colors(16))
##                
## Pareto chart analysis for tpdamage
##                  Frequency Cum.Freq.  Percentage Cum.Percent.
##   thunderstorm  3278.33874  3278.339 30.11933242     30.11933
##   tornado       3225.52581  6503.865 29.63412014     59.75345
##   flood         2444.50526  8948.370 22.45859027     82.21204
##   freeze         772.07789  9720.448  7.09337029     89.30541
##   wind           450.37000 10170.818  4.13771877     93.44313
##   winter_storm   326.84308 10497.661  3.00283044     96.44596
##   fire           125.31829 10622.979  1.15134632     97.59731
##   hurricane       75.85733 10698.836  0.69692985     98.29424
##   coastal_storm   54.65315 10753.490  0.50211907     98.79636
##   heavy_rain      54.55524 10808.045  0.50121953     99.29758
##   slide           21.87794 10829.923  0.20100087     99.49858
##   other           19.47686 10849.400  0.17894125     99.67752
##   cold            15.97604 10865.376  0.14677790     99.82430
##   drought         11.87528 10877.251  0.10910267     99.93340
##   maritime         4.21624 10881.467  0.03873618     99.97214
##   heat             3.03286 10884.500  0.02786403    100.00000
abline(h = sum(tpdamage)*0.8, col = "red", lwd = 3)
pareto.chart(tcdamage, main = "Crop Damage by Event Type",
             ylab = "Damage (Millions $)", col = topo.colors(16))
##                
## Pareto chart analysis for tcdamage
##                 Frequency Cum.Freq.   Percentage Cum.Percent.
##   freeze        592.79867  592.7987 43.024162854     43.02416
##   flood         367.24453  960.0432 26.653886497     69.67805
##   thunderstorm  202.89599 1162.9392 14.725792344     84.40384
##   tornado       100.02927 1262.9685  7.259927899     91.66377
##   drought        36.07090 1299.0394  2.617955057     94.28172
##   wind           21.23521 1320.2746  1.541209823     95.82293
##   hurricane      18.10291 1338.3775  1.313873643     97.13681
##   heavy_rain     12.45580 1350.8333  0.904017493     98.04083
##   fire            9.56574 1360.3990  0.694262616     98.73509
##   cold            8.95174 1369.3508  0.649699703     99.38479
##   winter_storm    4.84671 1374.1975  0.351764690     99.73655
##   heat            1.42740 1375.6249  0.103597888     99.84015
##   other           1.18295 1376.8078  0.085856187     99.92601
##   coastal_storm   0.93250 1377.7403  0.067679018     99.99369
##   maritime        0.05000 1377.7903  0.003628902     99.99731
##   slide           0.03700 1377.8273  0.002685387    100.00000
abline(h = sum(tcdamage)*0.8, col = "red", lwd = 3)
mtext("Figure 2: Economic Impact of Weather Events", outer = TRUE, 
      side = 1, cex = 1.5)

As shown in Figure 2, the greatest impacts in terms of property and crop damage are from: thunderstorm, tornado, flood, and freeze. These four categories account for more than 80% of both economic impacts. The absolute values of the damage costs are based on the assumption that the original raw data reports costs in thousands of dollars. This assumption is necessary as it is not clearly defined in the source documentation.

Additionally, we can note that tornado, thunderstorm, and flood are significant contributors to both human and economic impacts, while heat has more impact on people and freeze has more economic impact.

Appendix - Category Simplifications

The following function is used to “pretty print” all of the original categories that are rolled up into each of the summary categories:

all <- rbind(fatalities[, c(1, 3)], injuries[, c(1,3)], 
             pdamage[, c(1, 3)], cdamage[, c(1, 3)])
temp <- all[!duplicated(all[, 'EVTYPE']),]
temp2 <- tapply(temp$EVTYPE, temp$EVENT, sort)
out <- ""
for (index in c(1:10, 12:15, 11)) {
    temp3 <- unlist(temp2[index])
    out <- sprintf("%s%s - %d\n", out, names(temp2[index]), length(temp3))
    for (index2 in 1:length(temp3)) {
        out <- sprintf("%s    '%s'\n", out, as.character(temp3[index2]))
    }
    out <- sprintf("%s\n", out)
}
cat(out)
## coastal_storm - 39
##     'COASTAL FLOOD'
##     'Coastal Flooding'
##     'COASTAL FLOODING'
##     'COASTAL STORM'
##     'COASTALSTORM'
##     'Heavy Surf'
##     'HEAVY SURF'
##     'Heavy surf and wind'
##     'HEAVY SURF/HIGH SURF'
##     'High Surf'
##     'HIGH SURF'
##     'HIGH WAVES'
##     'RIP CURRENT'
##     'RIP CURRENTS'
##     'RIP CURRENTS/HEAVY SURF'
##     'ROUGH SURF'
##     'STORM SURGE'
##     'STORM SURGE/TIDE'
##     'TSUNAMI'
##     'COASTAL FLOODING/EROSION'
##     'Coastal Storm'
##     'HAZARDOUS SURF'
##     'ROGUE WAVE'
##     'TIDAL FLOODING'
##     '   HIGH SURF ADVISORY'
##     'ASTRONOMICAL HIGH TIDE'
##     'ASTRONOMICAL LOW TIDE'
##     'Beach Erosion'
##     'COASTAL  FLOODING/EROSION'
##     'COASTAL EROSION'
##     'Coastal Flood'
##     'COASTAL SURGE'
##     'Erosion/Cstl Flood'
##     'Heavy Rain/High Surf'
##     'HEAVY SURF COASTAL FLOODING'
##     'HIGH TIDES'
##     'HIGH WINDS/COASTAL FLOOD'
##     'Tidal Flooding'
##     'WIND AND WAVE'
## 
## cold - 26
##     'Cold'
##     'COLD'
##     'COLD AND SNOW'
##     'Cold Temperature'
##     'COLD WAVE'
##     'COLD WEATHER'
##     'COLD/WIND CHILL'
##     'COLD/WINDS'
##     'Extended Cold'
##     'Extreme Cold'
##     'EXTREME COLD'
##     'EXTREME COLD/WIND CHILL'
##     'EXTREME WINDCHILL'
##     'FOG AND COLD TEMPERATURES'
##     'HYPOTHERMIA'
##     'Hypothermia/Exposure'
##     'HYPOTHERMIA/EXPOSURE'
##     'LOW TEMPERATURE'
##     'RECORD COLD'
##     'SNOW/ BITTER COLD'
##     'UNSEASONABLY COLD'
##     'HIGH WINDS/COLD'
##     'EXTREME WIND CHILL'
##     'SNOW/COLD'
##     'COLD AND WET CONDITIONS'
##     'Unseasonable Cold'
## 
## drought - 12
##     'DROUGHT/EXCESSIVE HEAT'
##     'DRY MICROBURST'
##     'DUST DEVIL'
##     'DUST STORM'
##     'HEAT WAVE DROUGHT'
##     'UNSEASONABLY WARM AND DRY'
##     'DROUGHT'
##     'DRY MIRCOBURST WINDS'
##     'Dust Devil'
##     'BLOWING DUST'
##     'DUST DEVIL WATERSPOUT'
##     'DUST STORM/HIGH WINDS'
## 
## fire - 9
##     'WILD FIRES'
##     'WILD/FOREST FIRE'
##     'WILDFIRE'
##     'BRUSH FIRE'
##     'DENSE SMOKE'
##     'FOREST FIRES'
##     'GRASS FIRES'
##     'WILD/FOREST FIRES'
##     'WILDFIRES'
## 
## flood - 53
##     'FLASH FLOOD'
##     'FLASH FLOOD/FLOOD'
##     'FLASH FLOODING'
##     'FLASH FLOODING/FLOOD'
##     'FLASH FLOODS'
##     'FLOOD'
##     'FLOOD & HEAVY RAIN'
##     'FLOOD/FLASH FLOOD'
##     'FLOOD/RIVER FLOOD'
##     'FLOODING'
##     'HIGH WATER'
##     'MINOR FLOODING'
##     'RAPIDLY RISING WATER'
##     'RIVER FLOOD'
##     'RIVER FLOODING'
##     'URBAN AND SMALL STREAM FLOODIN'
##     'URBAN/SML STREAM FLD'
##     'ICE STORM/FLASH FLOOD'
##     'River Flooding'
##     ' FLASH FLOOD'
##     'BREAKUP FLOODING'
##     'DAM BREAK'
##     'FLASH FLOOD - HEAVY RAIN'
##     'FLASH FLOOD FROM ICE JAMS'
##     'FLASH FLOOD WINDS'
##     'FLASH FLOOD/'
##     'FLASH FLOOD/ STREET'
##     'FLASH FLOODING/THUNDERSTORM WI'
##     'FLOOD FLASH'
##     'FLOOD/FLASH'
##     'FLOOD/FLASH/FLOOD'
##     'FLOOD/FLASHFLOOD'
##     'FLOODING/HEAVY RAIN'
##     'FLOODS'
##     'HEAVY RAIN AND FLOOD'
##     'HEAVY RAINS/FLOODING'
##     'HEAVY SNOW/HIGH WINDS & FLOOD'
##     'Ice jam flood (minor'
##     'ICE JAM FLOODING'
##     'LAKE FLOOD'
##     'LAKESHORE FLOOD'
##     'MAJOR FLOOD'
##     'RIVER AND STREAM FLOOD'
##     'RURAL FLOOD'
##     'SNOWMELT FLOODING'
##     'THUNDERSTORM WINDS/ FLOOD'
##     'THUNDERSTORM WINDS/FLOODING'
##     'URBAN FLOOD'
##     'URBAN FLOODING'
##     'URBAN FLOODS'
##     'URBAN/SMALL STREAM FLOOD'
##     'FLOOD/RAIN/WINDS'
##     'SMALL STREAM FLOOD'
## 
## freeze - 64
##     'BLACK ICE'
##     'FREEZE'
##     'FREEZING DRIZZLE'
##     'FREEZING RAIN'
##     'FREEZING RAIN/SNOW'
##     'Freezing Spray'
##     'FROST'
##     'GLAZE'
##     'HAIL'
##     'ICE'
##     'ICE ON ROAD'
##     'ICE STORM'
##     'ICY ROADS'
##     'SLEET'
##     'SNOW AND ICE'
##     'GLAZE/ICE STORM'
##     'HEAVY SNOW/ICE'
##     'ICE ROADS'
##     'SMALL HAIL'
##     'DAMAGING FREEZE'
##     'Freezing drizzle'
##     'Freezing Drizzle'
##     'FREEZING FOG'
##     'Freezing Rain'
##     'FREEZING RAIN/SLEET'
##     'Frost/Freeze'
##     'FROST/FREEZE'
##     'FROST\FREEZE'
##     'Glaze'
##     'GLAZE ICE'
##     'HAIL 0.75'
##     'HAIL 100'
##     'HAIL 175'
##     'HAIL 275'
##     'HAIL 450'
##     'HAIL 75'
##     'HAIL DAMAGE'
##     'HAIL/WIND'
##     'HAIL/WINDS'
##     'HAILSTORM'
##     'HEAVY SNOW/FREEZING RAIN'
##     'ICE AND SNOW'
##     'ICE FLOES'
##     'ICE JAM'
##     'ICE/STRONG WINDS'
##     'LIGHT FREEZING RAIN'
##     'SLEET/ICE STORM'
##     'SNOW AND ICE STORM'
##     'SNOW FREEZING RAIN'
##     'SNOW/ ICE'
##     'SNOW/FREEZING RAIN'
##     'SNOW/ICE'
##     'SNOW/ICE STORM'
##     'SNOW/SLEET'
##     'SNOW/SLEET/FREEZING RAIN'
##     'AGRICULTURAL FREEZE'
##     'Damaging Freeze'
##     'Early Frost'
##     'Freeze'
##     'HAIL 075'
##     'HAIL 125'
##     'HAIL 150'
##     'HAIL 200'
##     'HARD FREEZE'
## 
## heat - 11
##     'EXCESSIVE HEAT'
##     'EXTREME HEAT'
##     'HEAT'
##     'HEAT WAVE'
##     'HEAT WAVES'
##     'HYPERTHERMIA/EXPOSURE'
##     'RECORD HEAT'
##     'RECORD/EXCESSIVE HEAT'
##     'UNSEASONABLY WARM'
##     'Heat Wave'
##     'WARM WEATHER'
## 
## heavy_rain - 23
##     'EXCESSIVE RAINFALL'
##     'HEAVY RAIN'
##     'RAIN/SNOW'
##     'RAIN/WIND'
##     'HEAVY RAINS'
##     'Torrential Rainfall'
##     'GUSTY WIND/HVY RAIN'
##     'Gusty wind/rain'
##     'HEAVY PRECIPITATION'
##     'HEAVY RAIN/LIGHTNING'
##     'HEAVY RAIN/SEVERE WEATHER'
##     'HEAVY RAIN/SMALL STREAM URBAN'
##     'HEAVY RAIN/SNOW'
##     'HEAVY SHOWER'
##     'HIGH WINDS HEAVY RAINS'
##     'HIGH WINDS/HEAVY RAIN'
##     'LIGHTNING AND HEAVY RAIN'
##     'LIGHTNING/HEAVY RAIN'
##     'RAIN'
##     'RAINSTORM'
##     'RECORD RAINFALL'
##     'HVY RAIN'
##     'UNSEASONAL RAIN'
## 
## hurricane - 17
##     'HURRICANE'
##     'HURRICANE ERIN'
##     'HURRICANE FELIX'
##     'HURRICANE OPAL'
##     'HURRICANE OPAL/HIGH WINDS'
##     'HURRICANE/TYPHOON'
##     'TROPICAL STORM'
##     'TROPICAL STORM GORDON'
##     'HURRICANE-GENERATED SWELLS'
##     'Hurricane Edouard'
##     'HURRICANE EMILY'
##     'TYPHOON'
##     'HURRICANE GORDON'
##     'TROPICAL DEPRESSION'
##     'TROPICAL STORM ALBERTO'
##     'TROPICAL STORM DEAN'
##     'TROPICAL STORM JERRY'
## 
## maritime - 14
##     'HEAVY SEAS'
##     'HIGH SEAS'
##     'HIGH SWELLS'
##     'HIGH WIND AND SEAS'
##     'HIGH WIND/SEAS'
##     'Marine Accident'
##     'MARINE HIGH WIND'
##     'MARINE MISHAP'
##     'MARINE STRONG WIND'
##     'MARINE THUNDERSTORM WIND'
##     'MARINE TSTM WIND'
##     'ROUGH SEAS'
##     'HEAVY SWELLS'
##     'MARINE HAIL'
## 
## slide - 16
##     'AVALANCE'
##     'AVALANCHE'
##     'FALLING SNOW/ICE'
##     'LANDSLIDE'
##     'LANDSLIDES'
##     'Mudslide'
##     'Mudslides'
##     'HEAVY SNOW/BLIZZARD/AVALANCHE'
##     'FLASH FLOOD LANDSLIDES'
##     'FLASH FLOOD/LANDSLIDE'
##     'MUD SLIDE'
##     'MUD SLIDES'
##     'MUD SLIDES URBAN FLOODING'
##     'MUDSLIDE'
##     'MUDSLIDES'
##     'ROCK SLIDE'
## 
## thunderstorm - 76
##     'LIGHTNING'
##     'LIGHTNING.'
##     'THUNDERSTORM'
##     'THUNDERSTORM WIND'
##     'THUNDERSTORM WIND (G40)'
##     'THUNDERSTORM WIND G52'
##     'THUNDERSTORM WINDS'
##     'THUNDERTORM WINDS'
##     'TSTM WIND'
##     'TSTM WIND (G35)'
##     'TSTM WIND/HAIL'
##     'LIGHTNING AND THUNDERSTORM WIN'
##     'LIGHTNING INJURY'
##     'THUNDERSTORM  WINDS'
##     'THUNDERSTORM WINDS 13'
##     'THUNDERSTORM WINDS/HAIL'
##     'THUNDERSTORM WINDSS'
##     'THUNDERSTORMS WINDS'
##     'THUNDERSTORMW'
##     'TSTM WIND (G40)'
##     'TSTM WIND (G45)'
##     'LIGHTING'
##     'LIGHTNING  WAUSEON'
##     'LIGHTNING FIRE'
##     'LIGHTNING THUNDERSTORM WINDS'
##     'LIGNTNING'
##     'SEVERE THUNDERSTORM'
##     'SEVERE THUNDERSTORM WINDS'
##     'SEVERE THUNDERSTORMS'
##     'THUDERSTORM WINDS'
##     'THUNDEERSTORM WINDS'
##     'THUNDERESTORM WINDS'
##     'THUNDERSTORM DAMAGE TO'
##     'THUNDERSTORM HAIL'
##     'THUNDERSTORM WIND 60 MPH'
##     'THUNDERSTORM WIND 65 MPH'
##     'THUNDERSTORM WIND 65MPH'
##     'THUNDERSTORM WIND 98 MPH'
##     'THUNDERSTORM WIND G50'
##     'THUNDERSTORM WIND G55'
##     'THUNDERSTORM WIND TREES'
##     'THUNDERSTORM WIND/ TREE'
##     'THUNDERSTORM WIND/ TREES'
##     'THUNDERSTORM WIND/AWNING'
##     'THUNDERSTORM WIND/HAIL'
##     'THUNDERSTORM WIND/LIGHTNING'
##     'THUNDERSTORM WINDS 63 MPH'
##     'THUNDERSTORM WINDS AND'
##     'THUNDERSTORM WINDS HAIL'
##     'THUNDERSTORM WINDS LIGHTNING'
##     'THUNDERSTORM WINDS.'
##     'THUNDERSTORM WINDS53'
##     'THUNDERSTORM WINDSHAIL'
##     'THUNDERSTORM WINS'
##     'THUNDERSTORMS'
##     'THUNDERSTORMS WIND'
##     'THUNDERSTORMWINDS'
##     'THUNDERSTROM WIND'
##     'THUNERSTORM WINDS'
##     'Tstm Wind'
##     'TSTM WIND  (G45)'
##     'TSTM WIND (41)'
##     'TSTM WIND 40'
##     'TSTM WIND 45'
##     'TSTM WIND 55'
##     'TSTM WIND 65)'
##     'TSTM WIND AND LIGHTNING'
##     'TSTM WIND DAMAGE'
##     'TSTM WIND G45'
##     'TSTM WIND G58'
##     'TSTM WINDS'
##     'TSTMW'
##     'TUNDERSTORM WIND'
##     'THUNDERSTORM WIND G60'
##     'THUNDERSTORM WIND.'
##     'THUNDERSTORM WINDS G60'
## 
## tornado - 19
##     'TORNADO'
##     'TORNADOES, TSTM WIND, HAIL'
##     'WATERSPOUT'
##     'WATERSPOUT/TORNADO'
##     'Whirlwind'
##     'FUNNEL CLOUD'
##     'TORNADO F2'
##     'TORNADO F3'
##     'WATERSPOUT TORNADO'
##     'COLD AIR TORNADO'
##     'THUNDERSTORM WINDS/FUNNEL CLOU'
##     'TORNADO F0'
##     'TORNADO F1'
##     'TORNDAO'
##     'WATERSPOUT-'
##     'WATERSPOUT-TORNADO'
##     'WATERSPOUT/ TORNADO'
##     'WHIRLWIND'
##     'TORNADOES'
## 
## wind - 33
##     'GUSTY WIND'
##     'GUSTY WINDS'
##     'HIGH WIND'
##     'HIGH WINDS'
##     'STRONG WIND'
##     'Strong Winds'
##     'STRONG WINDS'
##     'WIND'
##     'WIND STORM'
##     'WINDS'
##     'Gusty winds'
##     'Gusty Winds'
##     'HIGH WIND 48'
##     'NON-SEVERE WIND DAMAGE'
##     'NON TSTM WIND'
##     ' TSTM WIND'
##     ' TSTM WIND (G45)'
##     'gradient wind'
##     'Gradient wind'
##     'GRADIENT WIND'
##     'GUSTY WIND/HAIL'
##     'HIGH  WINDS'
##     'HIGH WIND (G40)'
##     'HIGH WIND DAMAGE'
##     'HIGH WINDS/'
##     'MICROBURST WINDS'
##     'NON-TSTM WIND'
##     'STORM FORCE WINDS'
##     'Strong Wind'
##     'Wind'
##     'Wind Damage'
##     'WIND DAMAGE'
##     'WIND/HAIL'
## 
## other - 23
##     'DENSE FOG'
##     'DROWNING'
##     'FOG'
##     'HIGH'
##     'OTHER'
##     '?'
##     'APACHE COUNTY'
##     'DOWNBURST'
##     'GUSTNADO'
##     'Landslump'
##     'LANDSPOUT'
##     'Microburst'
##     'MICROBURST'
##     'Other'
##     'SEICHE'
##     'SEVERE TURBULENCE'
##     'URBAN AND SMALL'
##     'URBAN SMALL'
##     'URBAN/SMALL STREAM'
##     'VOLCANIC ASH'
##     'WET MICROBURST'
##     'COOL AND WET'
##     'EXCESSIVE WETNESS'