Synopsis

In this report we aim to find out what types of weather events across the United States were the most harmful with respect to the population health and what events had the greatest economic consequences in period since 1950 till November 2011. To investigate this we obtained the U.S. National Oceanic and Atmospheric Administration’s (NOAA) storm database. This database tracks characteristics of major storms and weather events in the United States, including when and where they occur, as well as estimates of any fatalities, injuries, and property damage.
As a result of conducted analysis we found that Tornadoes are the most harmful for population health resulting in more than 96 thousand number of injuries and fatalities. Floods had the greatest economic consequences, resulting in $161 billions of loss.

Data Processing

We first load bz2 archive with Storm Data from the course web site to the current working directory. Then we read in raw csv file included in bz2 archive.

fileUrl<-"https://d396qusza40orc.cloudfront.net/repdata%2Fdata%2FStormData.csv.bz2"
download.file(fileUrl,destfile=paste0(getwd(),"/StormData.csv.bz2"), method = "curl")
StormData<-read.csv(bzfile("StormData.csv.bz2"), stringsAsFactors = FALSE)

After reading in the Storm Data we check the first few rows (there are 902,297 rows in this dataset).

dim(StormData)
## [1] 902297     37
head(StormData, 2)
##   STATE__          BGN_DATE BGN_TIME TIME_ZONE COUNTY COUNTYNAME STATE
## 1       1 4/18/1950 0:00:00     0130       CST     97     MOBILE    AL
## 2       1 4/18/1950 0:00:00     0145       CST      3    BALDWIN    AL
##    EVTYPE BGN_RANGE BGN_AZI BGN_LOCATI END_DATE END_TIME COUNTY_END
## 1 TORNADO         0                                               0
## 2 TORNADO         0                                               0
##   COUNTYENDN END_RANGE END_AZI END_LOCATI LENGTH WIDTH F MAG FATALITIES
## 1         NA         0                        14   100 3   0          0
## 2         NA         0                         2   150 2   0          0
##   INJURIES PROPDMG PROPDMGEXP CROPDMG CROPDMGEXP WFO STATEOFFIC ZONENAMES
## 1       15    25.0          K       0                                    
## 2        0     2.5          K       0                                    
##   LATITUDE LONGITUDE LATITUDE_E LONGITUDE_ REMARKS REFNUM
## 1     3040      8812       3051       8806              1
## 2     3042      8755          0          0              2

As soon as the questions address only damage with respect to population health and economic consequences, it’s reasonable to select only corresponding columns to create smaller data frame for the analysis. The columns are selected using dplyr package.

library(dplyr)
StormData<-select(StormData, c("BGN_DATE","EVTYPE","FATALITIES","INJURIES",
                               "PROPDMG","PROPDMGEXP","CROPDMG","CROPDMGEXP"))

The next step is to convert BGN_DATE variable to Date format and fix EVTYPE variable. Since the same event names are currently written both in upper and lower case they are counted as different events, so to fix them we convert them to upper case and trim spaces around.

StormData$BGN_DATE<-as.Date(StormData$BGN_DATE,"%m/%d/%Y") 
StormData$EVTYPE<-toupper(trimws(StormData$EVTYPE))

To calculate the economic damage we have to process PROPDMG, PROPDMGEXP, CROPDMG and CROPDMGEXP variables. PROPDMG and CROPDMG contain numeric values that have to be multiplied by the values that correspond to alphabetical character signifying the magnitude of the number in PROPDMG and CROPDMG columns, i.e., 1.55B for $1,550,000,000. According to National Weather Service Storm Data Documentation alphabetical characters used to signify magnitude include “K” for thousands, “M” for millions, and “B” for billions. In practice the PROPDMGEXP and CROPDMGEXP contain the following characters:

sort(unique(c(unique(StormData$PROPDMGEXP), unique(StormData$CROPDMGEXP))))
##  [1] ""  "-" "?" "+" "0" "1" "2" "3" "4" "5" "6" "7" "8" "B" "h" "H" "k"
## [18] "K" "m" "M"

As suggested and proved in rpubs document these characters should be interpreted as follows:

The convertDmg function combines DMG and DMGEXP columns to produce numeric amount of damage.

convertDmg<-function(val, valexp){
    res<-vector("numeric",length=length(val))
    for (i in 1:length(val)){
        if (valexp[i] %in% c("H","h")) {res[i]=val[i]*100}
        else if (valexp[i] %in% c("K","k")) {res[i]=val[i]*1000}
        else if (valexp[i] %in% c("M","m")) {res[i]=val[i]*1000000}
        else if (valexp[i] %in% c("B","b")) {res[i]=val[i]*1000000000}
        else if (valexp[i] %in% c("+")) {res[i]=val[i]*1}
        else if (valexp[i] %in% c("-","?","")) {res[i]=val[i]*0}
        else if (valexp[i] %in% c("0","1","2","3","4","5","6","7","8","9")) 
            {res[i]=val[i]*10}
    } 
    res
}

The results of applying convertDmg function to PROPDMG and CROPDMG are saved to StormData as PROPDMGNUM and CROPDMGNUM. The PROPDMG, PROPDMGEXP, CROPDMG, CROPDMGEXP variables are not necessary any more, so we can keep only PROPDMGNUM and CROPDMGNUM in the data frame.

StormData<-mutate(StormData, PROPDMGNUM=convertDmg(PROPDMG, PROPDMGEXP))
StormData<-mutate(StormData, CROPDMGNUM=convertDmg(CROPDMG,CROPDMGEXP))  
StormData<-select(StormData, c("BGN_DATE","EVTYPE","FATALITIES","INJURIES",
                               "PROPDMGNUM","CROPDMGNUM"))          

Also we only need rows that contain nonzero values for both population and economic damage. But let’s first check if there are any negative values there.

StormDataNeg<-filter(StormData, FATALITIES<0 | INJURIES <0 | PROPDMGNUM<0 | CROPDMGNUM<0)
dim(StormDataNeg)
## [1] 0 6

So there are no negative values in these columns, so let’s then select rows that contain at least one positive number for the columns that contain damage amounts (people or USD).

StormData<-filter(StormData, FATALITIES>0 | INJURIES >0 | PROPDMGNUM>0 | CROPDMGNUM>0)
dim(StormData)
## [1] 254563      6

The amount of data significantly decreased to only 254563 rows. We also have to identify unique values for the EVTYPE variable that remain in the data frame (the events with nonzero damage) and clean them up.

length(unique(StormData$EVTYPE))
## [1] 443

After doing a cleanup for EVTYPE (code can be found in Appendix1. A.1.) the number of unique events significantly decreased, which makes further analysis easier. List of unique events can be found in Appendix1. A.2.

length(unique(StormData$EVTYPE))
## [1] 144

Results

Question 1

Across the United States, which types of events (as indicated in the EVTYPE variable) are most harmful with respect to population health?

In order to answer this question we are going to calculate the number of fatalities and injuries caused by each type of weather events separately as well as total number of cases of damage to people health. After this is done we select top 5 events by the number of fatalities, injuries and sum of both.

library(dplyr)
StormDataPpl<-filter(StormData, (StormData$FATALITIES>0) | (StormData$INJURIES>0))
StormDataPpl$EVTYPE<-as.factor(StormDataPpl$EVTYPE)
EventTypes<-group_by(StormDataPpl, EVTYPE)
pplHarm<-summarise(EventTypes, Sum.Fatalities=sum(FATALITIES), Sum.Injuries=sum(INJURIES),
                   Sum.Total=sum(FATALITIES)+sum(INJURIES))
pplHarmTop<-data.frame(); k<-5
pplHarm<-arrange(pplHarm, desc(Sum.Fatalities))
tempdf<-data.frame(EVTYPE=pplHarm$EVTYPE[1:k],
                   Sum.Damage=pplHarm$Sum.Fatalities[1:k],
                   Type.Damage=rep("Fatalities",k))
pplHarmTop<-rbind(pplHarmTop,tempdf)
pplHarm<-arrange(pplHarm, desc(Sum.Injuries))
tempdf<-data.frame(EVTYPE=pplHarm$EVTYPE[1:k],
                   Sum.Damage=pplHarm$Sum.Injuries[1:k],
                   Type.Damage=rep("Injuries",k))
pplHarmTop<-rbind(pplHarmTop,tempdf)
pplHarm<-arrange(pplHarm, desc(Sum.Total))
tempdf<-data.frame(EVTYPE=pplHarm$EVTYPE[1:k],
                   Sum.Damage=pplHarm$Sum.Total[1:k],
                   Type.Damage=rep("Total",k))
pplHarmTop<-rbind(pplHarmTop,tempdf)
pplHarmTop$EVTYPE<-as.character(pplHarmTop$EVTYPE)

The following plot shows top 5 events by the number of fatalitites, injuries and sum of both across the United States from 1950 to 2011.

library(ggplot2)
g1<-ggplot(pplHarmTop, aes(x=reorder(EVTYPE,Sum.Damage, max), y=Sum.Damage)) + 
    facet_grid(.~Type.Damage, scales = "free_x") + geom_col(aes(fill=Sum.Damage)) + 
    geom_text(aes(label=Sum.Damage), size=3, vjust=-0.5) + theme_bw() + 
    labs(title="Top 5 harmful weather events by the type of damage to people health") +
    xlab("Event type") + ylab("Number of cases") +
    theme(axis.text.x=element_text(size = rel(0.8), angle=45, hjust=1)) + 
    theme(plot.title =element_text(hjust = 0.5))
g1    

As shown on the figure, the most harmful weather event across the United States is TORNADO rated the top by both fatalities and injuries caused. The second place goes to THUNDERSTORM WIND, and the third - to EXCESSIVE HEAT (although it’s on the second place by the number of fatalities).

Question 2

Across the United States, which types of events have the greatest economic consequences?

To find out what type of weather events had the greatest economic consequences to the United States’ economy in period since 1950 to 2011 we are going to calculate the total amount of property and crop damage for each type of weather event. Also the sum of both will be calculated. Then we select top 5 events by the amount of property damage, crops damage and by their total value. The selected data is saved as economyDmgTop data frame with amounts of damage stated in billions of USD.

library(dplyr)
StormDataEconomy<-filter(StormData, (StormData$PROPDMGNUM>0) | (StormData$CROPDMGNUM>0))
StormDataEconomy$EVTYPE<-as.factor(StormDataEconomy$EVTYPE)
EventTypes<-group_by(StormDataEconomy, EVTYPE)
economyDmg<-summarise(EventTypes, Sum.Prop.Damage=sum(PROPDMGNUM), 
                      Sum.Crop.Damage=sum(CROPDMGNUM),
                      Sum.Total=sum(PROPDMGNUM)+sum(CROPDMGNUM))
economyDmgTop<-data.frame(); k<-5
economyDmg<-arrange(economyDmg, desc(Sum.Prop.Damage))
tempdf<-data.frame(EVTYPE=economyDmg$EVTYPE[1:k],
                   Sum.Damage=economyDmg$Sum.Prop.Damage[1:k],
                   Type.Damage=rep("Property Damage",k))
economyDmgTop<-rbind(economyDmgTop,tempdf)
economyDmg<-arrange(economyDmg, desc(Sum.Crop.Damage))
tempdf<-data.frame(EVTYPE=economyDmg$EVTYPE[1:k],
                   Sum.Damage=economyDmg$Sum.Crop.Damage[1:k],
                   Type.Damage=rep("Crop Damage",k))
economyDmgTop<-rbind(economyDmgTop,tempdf)
economyDmg<-arrange(economyDmg, desc(Sum.Total))
tempdf<-data.frame(EVTYPE=economyDmg$EVTYPE[1:k],
                   Sum.Damage=economyDmg$Sum.Total[1:k],
                   Type.Damage=rep("Total",k))
economyDmgTop<-rbind(economyDmgTop,tempdf)
economyDmgTop$EVTYPE<-as.character(economyDmgTop$EVTYPE)
economyDmgTop$Sum.Damage<-round(economyDmgTop$Sum.Damage/1000000000,1)

The following plot created on base of economyDmgTop data frame shows top 5 most harmful weather events by economic consequences (USD loss).

g2<-ggplot(economyDmgTop, aes(x=reorder(EVTYPE,Sum.Damage, max), y=round(Sum.Damage,2))) + 
    facet_grid(.~Type.Damage, scales = "free_x") + geom_col(aes(fill=Sum.Damage)) + 
    geom_text(aes(label=Sum.Damage), size=3, vjust=-0.5) + theme_bw() + 
    labs(title="Top 5 most harmful weather events by economic damage") +
    xlab("Event type") + ylab("Economic damage, billions USD") +
    theme(axis.text.x=element_text(size = rel(0.8), angle=45, hjust=1)) + 
    theme(plot.title =element_text(hjust = 0.5))
g2    

The greatest consequences to United States economy from 1950 to 2011 were caused by FLOOD, $161 billions in total. The second place in the rating goes to HURRICANE/TYPHOON that caused $71.9 billions of total damage. TORNADOES caused not much less damage - $57.4 billions.

Appendix 1.

A1.1. Code for cleanup of the EVTYPE variable

library(Hmisc)
StormData$EVTYPE<-gsub("  "," ",StormData$EVTYPE)
StormData$EVTYPE<-gsub("  "," ",StormData$EVTYPE)
StormData$EVTYPE<-gsub("APACHE COUNTY","THUNDERSTORM WIND",StormData$EVTYPE)
StormData$EVTYPE<-gsub("AGRICULTURAL FREEZE","FROST/FREEZE",StormData$EVTYPE)
StormData$EVTYPE<-gsub("AVALANCE","AVALANCHE",StormData$EVTYPE)
StormData$EVTYPE<-gsub("BLACK ICE","ICE ROADS",StormData$EVTYPE)
StormData$EVTYPE<-gsub("BLIZZARD/WINTER STORM","BLIZZARD",StormData$EVTYPE)
StormData$EVTYPE<-gsub("BLOWING SNOW","BLIZZARD",StormData$EVTYPE)
StormData$EVTYPE<-gsub("BREAKUP FLOODING","FLOOD",StormData$EVTYPE)
StormData$EVTYPE<-gsub("^COASTAL EROSION$","COASTAL FLOOD",StormData$EVTYPE)
StormData$EVTYPE<-gsub("^COASTAL FLOODING/EROSION$","COASTAL FLOOD",StormData$EVTYPE)
StormData$EVTYPE<-gsub("^COASTAL FLOODING$","COASTAL FLOOD",StormData$EVTYPE)
StormData$EVTYPE<-gsub("COASTALSTORM","COASTAL STORM",StormData$EVTYPE)

StormData$EVTYPE<-gsub("COLD TEMPERATURE","COLD/WIND CHILL",StormData$EVTYPE)
StormData$EVTYPE<-gsub("^COLD$","COLD/WIND CHILL",StormData$EVTYPE)
StormData$EVTYPE<-gsub("COLD AIR TORNADO","TORNADO",StormData$EVTYPE)
StormData$EVTYPE<-gsub("COLD WEATHER","COLD/WIND CHILL",StormData$EVTYPE)
StormData$EVTYPE<-gsub("COLD WAVE","COLD/WIND CHILL",StormData$EVTYPE)
StormData$EVTYPE<-gsub("COLD/WINDS","COLD/WIND CHILL",StormData$EVTYPE)
StormData$EVTYPE<-gsub("COLD AND SNOW","WINTER WEATHER",StormData$EVTYPE)
StormData$EVTYPE<-gsub("COLD AND WET CONDITIONS","COLD/WIND CHILL",StormData$EVTYPE)
StormData$EVTYPE<-gsub("COOL AND WET","COLD/WIND CHILL",StormData$EVTYPE)
StormData$EVTYPE<-gsub("COLD AND WET CONDITIONS","WINTER WEATHER",StormData$EVTYPE)

StormData$EVTYPE<-gsub("DAMAGING FREEZE","FROST/FREEZE",StormData$EVTYPE)
StormData$EVTYPE<-gsub("DROUGHT/EXCESSIVE HEAT","EXCESSIVE HEAT",StormData$EVTYPE)
StormData$EVTYPE<-gsub("DRY MIRCOBURST WINDS","DRY MICROBURST",StormData$EVTYPE)
StormData$EVTYPE<-gsub("DUST DEVIL WATERSPOUT","DUST DEVIL",StormData$EVTYPE)
StormData$EVTYPE<-gsub("EARLY FROST","FROST/FREEZE",StormData$EVTYPE)
StormData$EVTYPE<-gsub("EROSION/CSTL FLOOD","COASTAL FLOOD",StormData$EVTYPE)
StormData$EVTYPE<-gsub("EXTENDED COLD$","EXTREME COLD/WIND CHILL",StormData$EVTYPE)
StormData$EVTYPE<-gsub("EXTREME COLD$","EXTREME COLD/WIND CHILL",StormData$EVTYPE)
StormData$EVTYPE<-gsub("EXTREME WIND CHILL","EXTREME COLD/WIND CHILL",StormData$EVTYPE)
StormData$EVTYPE<-gsub("EXTREME WINDCHILL","EXTREME COLD/WIND CHILL",StormData$EVTYPE)
StormData$EVTYPE<-gsub("EXTREME HEAT","EXCESSIVE HEAT",StormData$EVTYPE)

StormData$EVTYPE<-gsub("FLOODING","FLOOD",StormData$EVTYPE)
StormData$EVTYPE<-gsub("FLOODS","FLOOD",StormData$EVTYPE)
StormData$EVTYPE<-gsub("FLASH FLOOD - HEAVY RAIN","FLASH FLOOD",StormData$EVTYPE)
StormData$EVTYPE<-gsub("FLASH FLOOD FROM ICE JAMS","FLASH FLOOD",StormData$EVTYPE)
StormData$EVTYPE<-gsub("FLASH FLOOD LANDSLIDES$","FLASH FLOOD",StormData$EVTYPE)
StormData$EVTYPE<-gsub("FLASH FLOOD/$","FLASH FLOOD",StormData$EVTYPE)
StormData$EVTYPE<-gsub("FLASH FLOOD/ STREET","FLASH FLOOD",StormData$EVTYPE)
StormData$EVTYPE<-gsub("^FLASH FLOOD/FLOOD$","FLASH FLOOD",StormData$EVTYPE)
StormData$EVTYPE<-gsub("^FLASH FLOOD/LANDSLIDE$","FLASH FLOOD",StormData$EVTYPE)
StormData$EVTYPE<-gsub("FLASH FLOOD/THUNDERSTORM WI","FLASH FLOOD",StormData$EVTYPE)
StormData$EVTYPE<-gsub("^FLOOD FLASH$","FLASH FLOOD",StormData$EVTYPE)
StormData$EVTYPE<-gsub("^FLOOD/FLASH$","FLASH FLOOD",StormData$EVTYPE)
StormData$EVTYPE<-gsub("^FLOOD/FLASH FLOOD$","FLASH FLOOD",StormData$EVTYPE)
StormData$EVTYPE<-gsub("^FLOOD/FLASH/FLOOD$","FLASH FLOOD",StormData$EVTYPE)
StormData$EVTYPE<-gsub("FLOOD & HEAVY RAIN","FLOOD",StormData$EVTYPE)
StormData$EVTYPE<-gsub("FLOOD/FLASHFLOOD","FLASH FLOOD",StormData$EVTYPE)
StormData$EVTYPE<-gsub("^FLOOD/RAIN/WINDS$","FLOOD",StormData$EVTYPE)
StormData$EVTYPE<-gsub("^FLOOD/RIVER FLOOD$","FLOOD",StormData$EVTYPE)
StormData$EVTYPE<-gsub("^FLOOD/HEAVY RAIN$","FLOOD",StormData$EVTYPE)

StormData$EVTYPE<-gsub("^FOREST FIRES$","WILD FIRE",StormData$EVTYPE)
StormData$EVTYPE<-gsub("^FREEZE$","FROST/FREEZE",StormData$EVTYPE)
StormData$EVTYPE<-gsub("^FROST\\\\FREEZE$","FROST/FREEZE",StormData$EVTYPE)
StormData$EVTYPE<-gsub("^FROST$","FROST/FREEZE",StormData$EVTYPE)
StormData$EVTYPE<-gsub("^FREEZING DRIZZLE$","FREEZING RAIN",StormData$EVTYPE)
StormData$EVTYPE<-gsub("^FREEZING RAIN/SLEET$","FREEZING RAIN",StormData$EVTYPE)
StormData$EVTYPE<-gsub("^FREEZING RAIN/SNOW$","FREEZING RAIN",StormData$EVTYPE)
StormData$EVTYPE<-gsub("^FREEZING SPRAY$","FREEZING RAIN",StormData$EVTYPE)
StormData$EVTYPE<-gsub("^GRASS FIRES$","WILD FIRE",StormData$EVTYPE)
StormData$EVTYPE<-gsub("GROUND BLIZZARD","BLIZZARD",StormData$EVTYPE)
StormData$EVTYPE<-gsub("^GLAZE/ICE STORM$","ICE STORM",StormData$EVTYPE)
StormData$EVTYPE<-gsub("^GUSTY WINDS$","GUSTY WIND",StormData$EVTYPE)
StormData$EVTYPE<-gsub("^GUSTY WIND/HAIL$","HAIL",StormData$EVTYPE)
StormData$EVTYPE<-gsub("^GUSTY WIND/HEAVY RAIN$","HEAVY RAIN",StormData$EVTYPE)

StormData$EVTYPE<-gsub("^HAIL 0.75$","HAIL",StormData$EVTYPE)
StormData$EVTYPE<-gsub("^HAIL 075$","HAIL",StormData$EVTYPE)
StormData$EVTYPE<-gsub("^HAIL 100$","HAIL",StormData$EVTYPE)
StormData$EVTYPE<-gsub("^HAIL 125$","HAIL",StormData$EVTYPE)
StormData$EVTYPE<-gsub("^HAIL 150$","HAIL",StormData$EVTYPE)
StormData$EVTYPE<-gsub("^HAIL 175$","HAIL",StormData$EVTYPE)
StormData$EVTYPE<-gsub("^HAIL 200$","HAIL",StormData$EVTYPE)
StormData$EVTYPE<-gsub("^HAIL 275$","HAIL",StormData$EVTYPE)
StormData$EVTYPE<-gsub("^HAIL 450$","HAIL",StormData$EVTYPE)
StormData$EVTYPE<-gsub("^HAIL 75$","HAIL",StormData$EVTYPE)
StormData$EVTYPE<-gsub("^HAIL DAMAGE$","HAIL",StormData$EVTYPE)
StormData$EVTYPE<-gsub("^HAIL/WIND$","HAIL",StormData$EVTYPE)
StormData$EVTYPE<-gsub("^HAIL/WINDS$","HAIL",StormData$EVTYPE)
StormData$EVTYPE<-gsub("^HAILSTORM$","HAIL",StormData$EVTYPE)
StormData$EVTYPE<-gsub("^HEAT WAVE$","HEAT",StormData$EVTYPE)
StormData$EVTYPE<-gsub("^HARD FREEZE$","FROST/FREEZE",StormData$EVTYPE)
StormData$EVTYPE<-gsub("^HEAT WAVES$","HEAT",StormData$EVTYPE)
StormData$EVTYPE<-gsub("^HEAT WAVE DROUGHT$","HEAT",StormData$EVTYPE)

StormData$EVTYPE<-gsub("^HEAVY RAIN AND FLOOD$","FLOOD",StormData$EVTYPE)
StormData$EVTYPE<-gsub("^HEAVY PRECIPITATION$","HEAVY RAIN",StormData$EVTYPE)
StormData$EVTYPE<-gsub("^HEAVY RAIN/HIGH SURF$","HEAVY RAIN",StormData$EVTYPE)
StormData$EVTYPE<-gsub("^HEAVY RAIN/LIGHTNING$","HEAVY RAIN",StormData$EVTYPE)
StormData$EVTYPE<-gsub("^HEAVY RAIN/SEVERE WEATHER$","HEAVY RAIN",StormData$EVTYPE)
StormData$EVTYPE<-gsub("^HEAVY RAIN/SMALL STREAM URBAN$","HEAVY RAIN",StormData$EVTYPE)
StormData$EVTYPE<-gsub("^HEAVY RAIN/SNOW$","HEAVY SNOW",StormData$EVTYPE)
StormData$EVTYPE<-gsub("HEAVY RAINS","HEAVY RAIN",StormData$EVTYPE)
StormData$EVTYPE<-gsub("^HEAVY SHOWER$","HEAVY RAIN",StormData$EVTYPE)
StormData$EVTYPE<-gsub("^HEAVY RAIN/FLOOD$","FLOOD",StormData$EVTYPE)
StormData$EVTYPE<-gsub("HVY RAIN","HEAVY RAIN",StormData$EVTYPE)
StormData$EVTYPE<-gsub("^HEAVY SNOW AND HIGH WINDS$","HEAVY SNOW",StormData$EVTYPE)
StormData$EVTYPE<-gsub("^HEAVY SNOW AND STRONG WINDS$","HEAVY SNOW",StormData$EVTYPE)
StormData$EVTYPE<-gsub("^HEAVY SNOW SHOWER$","HEAVY SNOW",StormData$EVTYPE)
StormData$EVTYPE<-gsub("^HEAVY SNOW SQUALLS$","HEAVY SNOW",StormData$EVTYPE)
StormData$EVTYPE<-gsub("^HEAVY LAKE SNOW$","HEAVY SNOW",StormData$EVTYPE)
StormData$EVTYPE<-gsub("^HEAVY SNOW-SQUALLS$","HEAVY SNOW",StormData$EVTYPE)
StormData$EVTYPE<-gsub("^HEAVY SNOW/BLIZZARD$","BLIZZARD",StormData$EVTYPE)
StormData$EVTYPE<-gsub("^HEAVY SNOW/BLIZZARD/AVALANCHE$","BLIZZARD",StormData$EVTYPE)
StormData$EVTYPE<-gsub("^HEAVY SNOW/FREEZING RAIN$","HEAVY SNOW",StormData$EVTYPE)
StormData$EVTYPE<-gsub("^HEAVY SNOW/HIGH WINDS & FLOOD$","HEAVY SNOW",StormData$EVTYPE)
StormData$EVTYPE<-gsub("^HEAVY SNOW/ICE$","HEAVY SNOW",StormData$EVTYPE)
StormData$EVTYPE<-gsub("^HEAVY SNOW/SQUALLS$","HEAVY SNOW",StormData$EVTYPE)
StormData$EVTYPE<-gsub("^HEAVY SNOW/WIND$","HEAVY SNOW",StormData$EVTYPE)
StormData$EVTYPE<-gsub("^HEAVY SNOW/WINTER STORM$","HEAVY SNOW",StormData$EVTYPE)
StormData$EVTYPE<-gsub("^HEAVY SNOWPACK$","HEAVY SNOW",StormData$EVTYPE)

StormData$EVTYPE<-gsub("^HEAVY SURF$","HIGH SURF",StormData$EVTYPE)
StormData$EVTYPE<-gsub("^HEAVY SURF AND WIND$","HIGH SURF",StormData$EVTYPE)
StormData$EVTYPE<-gsub("^HEAVY SURF/HIGH SURF$","HIGH SURF",StormData$EVTYPE)
StormData$EVTYPE<-gsub("^HEAVY SURF COASTAL FLOODING$","COASTAL FLOOD",StormData$EVTYPE)
StormData$EVTYPE<-gsub("^HEAVY SURF/HIGH SURF$","HIGH SURF",StormData$EVTYPE)
StormData$EVTYPE<-gsub("^HIGH SURF ADVISORY$","HIGH SURF",StormData$EVTYPE)
StormData$EVTYPE<-gsub("^HIGH WAVES$","HIGH SURF",StormData$EVTYPE)
StormData$EVTYPE<-gsub("^HAZARDOUS SURF$","HIGH SURF",StormData$EVTYPE)
StormData$EVTYPE<-gsub("^HEAVY SURF COASTAL FLOOD$","HIGH SURF",StormData$EVTYPE)
StormData$EVTYPE<-gsub("^HIGH WINDS$","HIGH WIND",StormData$EVTYPE)
StormData$EVTYPE<-gsub(escapeRegex("HIGH WIND (G40)"),"HIGH WIND",StormData$EVTYPE)
StormData$EVTYPE<-gsub("^HIGH WIND 48$","HIGH WIND",StormData$EVTYPE)
StormData$EVTYPE<-gsub("^HIGH WIND DAMAGE$","HIGH WIND",StormData$EVTYPE)
StormData$EVTYPE<-gsub("^HIGH WIND/BLIZZARD$","BLIZZARD",StormData$EVTYPE)
StormData$EVTYPE<-gsub("^HIGH WIND AND SEAS$","HIGH WIND",StormData$EVTYPE)
StormData$EVTYPE<-gsub("^HIGH WIND/HEAVY SNOW$","HEAVY SNOW",StormData$EVTYPE)
StormData$EVTYPE<-gsub("^HIGH WIND/SEAS$","HIGH WIND",StormData$EVTYPE)
StormData$EVTYPE<-gsub("^HIGH WINDS HEAVY RAINS$","HEAVY RAIN",StormData$EVTYPE)
StormData$EVTYPE<-gsub("^HIGH WINDS HEAVY RAIN$","HEAVY RAIN",StormData$EVTYPE)
StormData$EVTYPE<-gsub("^HIGH WINDS/$","HIGH WIND",StormData$EVTYPE)
StormData$EVTYPE<-gsub("^HIGH WINDS/COASTAL FLOOD$","COASTAL FLOOD",StormData$EVTYPE)
StormData$EVTYPE<-gsub("^HIGH WINDS/COLD$","HIGH WIND",StormData$EVTYPE)
StormData$EVTYPE<-gsub("^HIGH WINDS/HEAVY RAIN$","HEAVY RAIN",StormData$EVTYPE)
StormData$EVTYPE<-gsub("^HIGH WINDS/SNOW$","HIGH WIND",StormData$EVTYPE)

StormData$EVTYPE<-gsub("^HURRICANE EDOUARD$","HURRICANE",StormData$EVTYPE)
StormData$EVTYPE<-gsub("^HURRICANE EMILY$","HURRICANE",StormData$EVTYPE)
StormData$EVTYPE<-gsub("^HURRICANE ERIN$","HURRICANE",StormData$EVTYPE)
StormData$EVTYPE<-gsub("^HURRICANE FELIX$","HURRICANE",StormData$EVTYPE)
StormData$EVTYPE<-gsub("^HURRICANE GORDON$","HURRICANE",StormData$EVTYPE)
StormData$EVTYPE<-gsub("^HURRICANE OPAL$","HURRICANE",StormData$EVTYPE)
StormData$EVTYPE<-gsub("^HURRICANE OPAL/HIGH WINDS$","HURRICANE",StormData$EVTYPE)
StormData$EVTYPE<-gsub("^HURRICANE-GENERATED SWELLS$","HURRICANE",StormData$EVTYPE)
StormData$EVTYPE<-gsub("^HIGH SWELLS$","COASTAL FLOOD",StormData$EVTYPE)
StormData$EVTYPE<-gsub("^HIGH TIDES$","COASTAL FLOOD",StormData$EVTYPE)
StormData$EVTYPE<-gsub("^HYPOTHERMIA/EXPOSURE$","HYPOTHERMIA",StormData$EVTYPE)
StormData$EVTYPE<-gsub("ICE STORM/FLASH FLOOD","ICE STORM",StormData$EVTYPE)
StormData$EVTYPE<-gsub("ICE ON ROAD","ICE ROADS",StormData$EVTYPE)
StormData$EVTYPE<-gsub("ICY ROADS","ICE ROADS",StormData$EVTYPE)
StormData$EVTYPE<-gsub(escapeRegex("ICE JAM FLOOD (MINOR"),"ICE JAM FLOOD",StormData$EVTYPE)
StormData$EVTYPE<-gsub("LAKE EFFECT SNOW","LAKE-EFFECT SNOW",StormData$EVTYPE)
StormData$EVTYPE<-gsub("LAKE FLOOD","LAKESHORE FLOOD",StormData$EVTYPE)
StormData$EVTYPE<-gsub("^LANDSLIDE$","DEBRIS FLOW",StormData$EVTYPE)

StormData$EVTYPE<-gsub("^LIGHTING$","LIGHTNING",StormData$EVTYPE)
StormData$EVTYPE<-gsub("^LIGHTNING.$","LIGHTNING",StormData$EVTYPE)
StormData$EVTYPE<-gsub("LIGHTNING WAUSEON","LIGHTNING",StormData$EVTYPE)
StormData$EVTYPE<-gsub("LIGHTNING INJURY","LIGHTNING",StormData$EVTYPE)
StormData$EVTYPE<-gsub("LIGNTNING","LIGHTNING",StormData$EVTYPE)
StormData$EVTYPE<-gsub("LIGHTNING FIRE","LIGHTNING",StormData$EVTYPE)
StormData$EVTYPE<-gsub("LIGHTNING THUNDERSTORM WINDS","THUNDERESTORM WINDS",StormData$EVTYPE)
StormData$EVTYPE<-gsub("LIGHTNING AND THUNDERSTORM WIN","THUNDERESTORM WINDS",StormData$EVTYPE)
StormData$EVTYPE<-gsub("LIGHTNING AND HEAVY RAIN","LIGHTNING/HEAVY RAIN",StormData$EVTYPE)
StormData$EVTYPE<-gsub("LOW TEMPERATURE","WINTER WEATHER",StormData$EVTYPE)
StormData$EVTYPE<-gsub("LIGHT SNOWFALL","LIGHT SNOW",StormData$EVTYPE)
StormData$EVTYPE<-gsub("MAJOR FLOOD","FLOOD",StormData$EVTYPE)
StormData$EVTYPE<-gsub("MICROBURST WINDS","MICROBURST",StormData$EVTYPE)
StormData$EVTYPE<-gsub("^MIXED PRECIP$","MIXED PRECIPITATION",StormData$EVTYPE)
StormData$EVTYPE<-gsub("^MUD SLIDES$","MUD SLIDE",StormData$EVTYPE)
StormData$EVTYPE<-gsub("^MUDSLIDE$","MUD SLIDE",StormData$EVTYPE)
StormData$EVTYPE<-gsub("^MUDSLIDES$","MUD SLIDE",StormData$EVTYPE)
StormData$EVTYPE<-gsub("NON TSTM","NON-TSTM",StormData$EVTYPE)

StormData$EVTYPE<-gsub("RECORD HEAT","EXCESSIVE HEAT",StormData$EVTYPE)
StormData$EVTYPE<-gsub("RECORD COLD","EXTREME COLD/WIND CHILL",StormData$EVTYPE)
StormData$EVTYPE<-gsub("RECORD RAINFALL","HEAVY RAIN",StormData$EVTYPE)
StormData$EVTYPE<-gsub("RECORD SNOW","HEAVY SNOW",StormData$EVTYPE)
StormData$EVTYPE<-gsub("RECORD/EXCESSIVE HEAT","EXCESSIVE HEAT",StormData$EVTYPE)
StormData$EVTYPE<-gsub("^RIP CURRENTS$","RIP CURRENT",StormData$EVTYPE)
StormData$EVTYPE<-gsub("^RIP CURRENTS/HEAVY SURF$","RIP CURRENT",StormData$EVTYPE)
StormData$EVTYPE<-gsub("RIVER AND STREAM FLOOD","FLOOD",StormData$EVTYPE)
StormData$EVTYPE<-gsub("^RIVER FLOOD$","FLOOD",StormData$EVTYPE)
StormData$EVTYPE<-gsub("^RURAL FLOOD$","FLOOD",StormData$EVTYPE)
StormData$EVTYPE<-gsub("^ROUGH SURF$","HIGH SURF",StormData$EVTYPE)
StormData$EVTYPE<-gsub("^SEVERE THUNDERSTORM$","THUNDERSTORM WIND",StormData$EVTYPE)
StormData$EVTYPE<-gsub("^SEVERE THUNDERSTORM WINDS$","THUNDERSTORM WIND",StormData$EVTYPE)
StormData$EVTYPE<-gsub("^SEVERE THUNDERSTORMS$","THUNDERSTORM WIND",StormData$EVTYPE)
StormData$EVTYPE<-gsub("SMALL HAIL","HAIL",StormData$EVTYPE)
StormData$EVTYPE<-gsub("SMALL STREAM FLOOD","FLOOD",StormData$EVTYPE)
StormData$EVTYPE<-gsub("^SNOW AND HEAVY SNOW$","HEAVY SNOW",StormData$EVTYPE)
StormData$EVTYPE<-gsub("SNOW AND ICE STORM","ICE STORM",StormData$EVTYPE)
StormData$EVTYPE<-gsub("SNOW/ICE STORM","ICE STORM",StormData$EVTYPE)
StormData$EVTYPE<-gsub("SNOW FREEZING RAIN","SNOW/FREEZING RAIN",StormData$EVTYPE)
StormData$EVTYPE<-gsub("SNOW SQUALLS","SNOW SQUALL",StormData$EVTYPE)
StormData$EVTYPE<-gsub("SNOW AND ICE","SNOW/ICE",StormData$EVTYPE)
StormData$EVTYPE<-gsub("SNOW/ ICE","SNOW/ICE",StormData$EVTYPE)
StormData$EVTYPE<-gsub("SNOW/BLIZZARD","BLIZZARD",StormData$EVTYPE)
StormData$EVTYPE<-gsub("SNOW/ BITTER COLD","SNOW/COLD",StormData$EVTYPE)
StormData$EVTYPE<-gsub("SNOW/HEAVY SNOW","HEAVY SNOW",StormData$EVTYPE)
StormData$EVTYPE<-gsub("SNOWMELT FLOOD","FLOOD",StormData$EVTYPE)
StormData$EVTYPE<-gsub("^STRONG WINDS$","STRONG WIND",StormData$EVTYPE)

StormData$EVTYPE<-gsub("TSTM","THUNDERSTORM",StormData$EVTYPE)
StormData$EVTYPE<-gsub("THUDERSTORM","THUNDERSTORM",StormData$EVTYPE)
StormData$EVTYPE<-gsub("THUNDEERSTORM","THUNDERSTORM",StormData$EVTYPE)
StormData$EVTYPE<-gsub("THUNDERSNOW","THUNDERSTORM",StormData$EVTYPE)
StormData$EVTYPE<-gsub("^THUNDERESTORM WINDS","THUNDERSTORM WIND",StormData$EVTYPE)
StormData$EVTYPE<-gsub("^THUNDERSTORM WINDS","THUNDERSTORM WIND",StormData$EVTYPE)
StormData$EVTYPE<-gsub("^THUNDERSTORM$","THUNDERSTORM WIND",StormData$EVTYPE)
StormData$EVTYPE<-gsub("THUNDERSTORM DAMAGE TO","THUNDERSTORM WIND",StormData$EVTYPE)
StormData$EVTYPE<-gsub("THUNDERSTORM WIND 60 MPH","THUNDERSTORM WIND",StormData$EVTYPE)
StormData$EVTYPE<-gsub(escapeRegex("THUNDERSTORM WIND (G40)"),"THUNDERSTORM WIND",StormData$EVTYPE)
StormData$EVTYPE<-gsub("THUNDERSTORM WIND 65 MPH","THUNDERSTORM WIND",StormData$EVTYPE)
StormData$EVTYPE<-gsub("THUNDERSTORM WIND 65MPH","THUNDERSTORM WIND",StormData$EVTYPE)
StormData$EVTYPE<-gsub("THUNDERSTORM WIND 98 MPH","THUNDERSTORM WIND",StormData$EVTYPE)
StormData$EVTYPE<-gsub("THUNDERSTORM WIND G45","THUNDERSTORM WIND",StormData$EVTYPE)
StormData$EVTYPE<-gsub("THUNDERSTORM WIND G50","THUNDERSTORM WIND",StormData$EVTYPE)
StormData$EVTYPE<-gsub("THUNDERSTORM WIND G52","THUNDERSTORM WIND",StormData$EVTYPE)
StormData$EVTYPE<-gsub("THUNDERSTORM WIND G55","THUNDERSTORM WIND",StormData$EVTYPE)
StormData$EVTYPE<-gsub("THUNDERSTORM WIND G58","THUNDERSTORM WIND",StormData$EVTYPE)
StormData$EVTYPE<-gsub("THUNDERSTORM WIND G60","THUNDERSTORM WIND",StormData$EVTYPE)
StormData$EVTYPE<-gsub("THUNDERSTORM WIND TREES","THUNDERSTORM WIND",StormData$EVTYPE)
StormData$EVTYPE<-gsub(escapeRegex("THUNDERSTORM WIND."),"THUNDERSTORM WIND",StormData$EVTYPE)
StormData$EVTYPE<-gsub("THUNDERSTORM WIND/ TREE","THUNDERSTORM WIND",StormData$EVTYPE)
StormData$EVTYPE<-gsub("THUNDERSTORM WIND/ TREES","THUNDERSTORM WIND",StormData$EVTYPE)
StormData$EVTYPE<-gsub("THUNDERSTORM WIND/AWNING","THUNDERSTORM WIND",StormData$EVTYPE)
StormData$EVTYPE<-gsub("THUNDERSTORM WIND 13","THUNDERSTORM WIND",StormData$EVTYPE)
StormData$EVTYPE<-gsub("THUNDERSTORM WIND 63 MPH","THUNDERSTORM WIND",StormData$EVTYPE)
StormData$EVTYPE<-gsub("THUNDERSTORM WIND AND","THUNDERSTORM WIND",StormData$EVTYPE)
StormData$EVTYPE<-gsub("THUNDERSTORM WIND G60","THUNDERSTORM WIND",StormData$EVTYPE)
StormData$EVTYPE<-gsub("THUNDERSTORM WIND HAIL","THUNDERSTORM WIND/HAIL",StormData$EVTYPE)
StormData$EVTYPE<-gsub("THUNDERSTORM WIND LIGHTNING","THUNDERSTORM WIND/LIGHTNING",StormData$EVTYPE)
StormData$EVTYPE<-gsub("THUNDERSTORM WINDHAIL","THUNDERSTORM WIND/HAIL",StormData$EVTYPE)
StormData$EVTYPE<-gsub("^THUNDERSTORM WINS$","THUNDERSTORM WIND",StormData$EVTYPE)
StormData$EVTYPE<-gsub("THUNDERSTORMS","THUNDERSTORM",StormData$EVTYPE)
StormData$EVTYPE<-gsub("^THUNDERSTORM WINDS$","THUNDERSTORM WIND",StormData$EVTYPE)
StormData$EVTYPE<-gsub("THUNDERSTORMW","THUNDERSTORM WIND",StormData$EVTYPE)
StormData$EVTYPE<-gsub("THUNDERSTORMWINDS","THUNDERSTORM WIND",StormData$EVTYPE)
StormData$EVTYPE<-gsub("THUNDERSTROM WIND","THUNDERSTORM WIND",StormData$EVTYPE)
StormData$EVTYPE<-gsub("THUNDERTORM WINDS","THUNDERSTORM WIND",StormData$EVTYPE)
StormData$EVTYPE<-gsub("THUNERSTORM WINDS","THUNDERSTORM WIND",StormData$EVTYPE)

StormData$EVTYPE<-gsub("TORNADO F0","TORNADO",StormData$EVTYPE)
StormData$EVTYPE<-gsub("TORNADO F1","TORNADO",StormData$EVTYPE)
StormData$EVTYPE<-gsub("TORNADO F2","TORNADO",StormData$EVTYPE)
StormData$EVTYPE<-gsub("TORNADO F3","TORNADO",StormData$EVTYPE)
StormData$EVTYPE<-gsub("^TORNADOES$","TORNADO",StormData$EVTYPE)
StormData$EVTYPE<-gsub("^TORNDAO$","TORNADO",StormData$EVTYPE)
StormData$EVTYPE<-gsub("TROPICAL STORM ALBERTO","TROPICAL STORM",StormData$EVTYPE)
StormData$EVTYPE<-gsub("TROPICAL STORM DEAN","TROPICAL STORM",StormData$EVTYPE)
StormData$EVTYPE<-gsub("TROPICAL STORM GORDON","TROPICAL STORM",StormData$EVTYPE)
StormData$EVTYPE<-gsub("TROPICAL STORM JERRY","TROPICAL STORM",StormData$EVTYPE)

StormData$EVTYPE<-gsub("THUNDERSTORM WIND/FUNNEL CLOU","THUNDERSTORM WIND",StormData$EVTYPE)
StormData$EVTYPE<-gsub("^TUNDERSTORM WIND","THUNDERSTORM WIND",StormData$EVTYPE)
StormData$EVTYPE<-gsub("^THUNDERSTORM$","THUNDERSTORM WIND",StormData$EVTYPE)
StormData$EVTYPE<-gsub("^THUNDERSTORM HAIL$","THUNDERSTORM WIND/HAIL",StormData$EVTYPE)
StormData$EVTYPE<-gsub(escapeRegex("THUNDERSTORM WIND (41)"),"THUNDERSTORM WIND",StormData$EVTYPE)
StormData$EVTYPE<-gsub(escapeRegex("THUNDERSTORM WIND (G35)"),"THUNDERSTORM WIND",StormData$EVTYPE)
StormData$EVTYPE<-gsub(escapeRegex("THUNDERSTORM WIND (G45)"),"THUNDERSTORM WIND",StormData$EVTYPE)
StormData$EVTYPE<-gsub("^THUNDERSTORM WIND/ FLOOD$","THUNDERSTORM WIND/FLOOD",StormData$EVTYPE)
StormData$EVTYPE<-gsub("^THUNDERSTORM WIND 40$","THUNDERSTORM WIND",StormData$EVTYPE)
StormData$EVTYPE<-gsub("^THUNDERSTORM WIND 45$","THUNDERSTORM WIND",StormData$EVTYPE)
StormData$EVTYPE<-gsub("^THUNDERSTORM WIND53$","THUNDERSTORM WIND",StormData$EVTYPE)
StormData$EVTYPE<-gsub("^THUNDERSTORM WIND 55$","THUNDERSTORM WIND",StormData$EVTYPE)
StormData$EVTYPE<-gsub(escapeRegex("THUNDERSTORM WIND 65)"),"THUNDERSTORM WIND",StormData$EVTYPE)
StormData$EVTYPE<-gsub("^THUNDERSTORM WINDAND LIGHTNING$","THUNDERSTORM WIND/LIGHTNING",StormData$EVTYPE)
StormData$EVTYPE<-gsub("^THUNDERSTORM WINDAWNING$","THUNDERSTORM WIND",StormData$EVTYPE)
StormData$EVTYPE<-gsub("^THUNDERSTORM WINDDAMAGE$","THUNDERSTORM WIND",StormData$EVTYPE)
StormData$EVTYPE<-gsub("^THUNDERSTORM WINDG45$","THUNDERSTORM WIND",StormData$EVTYPE)
StormData$EVTYPE<-gsub("^THUNDERSTORM WINDG58$","THUNDERSTORM WIND",StormData$EVTYPE)
StormData$EVTYPE<-gsub("^THUNDERSTORM WINDINDS$","THUNDERSTORM WIND",StormData$EVTYPE)
StormData$EVTYPE<-gsub("^THUNDERSTORM WINDLIGHTNING$","THUNDERSTORM WIND/LIGHTNING",StormData$EVTYPE)

StormData$EVTYPE<-gsub("UNSEASONABLE COLD","COLD/WIND CHILL",StormData$EVTYPE)
StormData$EVTYPE<-gsub("UNSEASONABLY COLD","COLD/WIND CHILL",StormData$EVTYPE)
StormData$EVTYPE<-gsub("URBAN AND SMALL","FLOOD",StormData$EVTYPE)
StormData$EVTYPE<-gsub("URBAN SMALL","FLOOD",StormData$EVTYPE)
StormData$EVTYPE<-gsub("URBAN FLOOD","FLOOD",StormData$EVTYPE)
StormData$EVTYPE<-gsub("URBAN FLOODS","FLOOD",StormData$EVTYPE)
StormData$EVTYPE<-gsub("URBAN/SMALL STREAM FLOOD","FLOOD",StormData$EVTYPE)
StormData$EVTYPE<-gsub("URBAN/SML STREAM FLD","FLOOD",StormData$EVTYPE)
StormData$EVTYPE<-gsub("URBAN AND SMALL STREAM FLOODIN","FLOOD",StormData$EVTYPE)
StormData$EVTYPE<-gsub("URBAN/SMALL STREAM","FLOOD",StormData$EVTYPE)
StormData$EVTYPE<-gsub("URBAN AND FLOODIN","FLOOD",StormData$EVTYPE)
StormData$EVTYPE<-gsub("URBAN/FLOOD","FLOOD",StormData$EVTYPE)

StormData$EVTYPE<-gsub("WATERSPOUT-$","WATERSPOUT",StormData$EVTYPE)
StormData$EVTYPE<-gsub("WATERSPOUT TORNADO","WATERSPOUT",StormData$EVTYPE)
StormData$EVTYPE<-gsub("WATERSPOUT-TORNADO","WATERSPOUT",StormData$EVTYPE)
StormData$EVTYPE<-gsub("WATERSPOUT/ TORNADO","WATERSPOUT",StormData$EVTYPE)
StormData$EVTYPE<-gsub("WATERSPOUT/TORNADO","WATERSPOUT",StormData$EVTYPE)
StormData$EVTYPE<-gsub("^WILD FIRES$","WILD FIRE",StormData$EVTYPE)
StormData$EVTYPE<-gsub("^WILD/FOREST FIRE$","WILD FIRE",StormData$EVTYPE)
StormData$EVTYPE<-gsub("^WILD/FOREST FIRES$","WILD FIRE",StormData$EVTYPE)
StormData$EVTYPE<-gsub("^WILDFIRE$","WILD FIRE",StormData$EVTYPE)
StormData$EVTYPE<-gsub("^WILDFIRES$","WILD FIRE",StormData$EVTYPE)
StormData$EVTYPE<-gsub("^WINDS$","WIND",StormData$EVTYPE)
StormData$EVTYPE<-gsub("WIND DAMAGE","WIND",StormData$EVTYPE)
StormData$EVTYPE<-gsub("WIND/HAIL","HAIL",StormData$EVTYPE)
StormData$EVTYPE<-gsub("WINTER WEATHER MIX","WINTER WEATHER",StormData$EVTYPE)
StormData$EVTYPE<-gsub("WINTER WEATHER/MIX","WINTER WEATHER",StormData$EVTYPE)
StormData$EVTYPE<-gsub("WINTRY MIX","WINTER WEATHER",StormData$EVTYPE)
StormData$EVTYPE<-gsub("WINTER STORMS","WINTER STORM",StormData$EVTYPE)
StormData$EVTYPE<-gsub("WINTER STORM HIGH WINDS","WINTER STORM",StormData$EVTYPE)

A1.2. Unique events after cleanup

sort(unique(StormData$EVTYPE))
##   [1] "?"                                 
##   [2] "ASTRONOMICAL HIGH TIDE"            
##   [3] "ASTRONOMICAL LOW TIDE"             
##   [4] "AVALANCHE"                         
##   [5] "BEACH EROSION"                     
##   [6] "BLIZZARD"                          
##   [7] "BLOWING DUST"                      
##   [8] "BRUSH FIRE"                        
##   [9] "COASTAL FLOOD"                     
##  [10] "COASTAL STORM"                     
##  [11] "COASTAL SURGE"                     
##  [12] "COLD/WIND CHILL"                   
##  [13] "DAM BREAK"                         
##  [14] "DEBRIS FLOW"                       
##  [15] "DENSE FOG"                         
##  [16] "DENSE SMOKE"                       
##  [17] "DOWNBURST"                         
##  [18] "DROUGHT"                           
##  [19] "DROWNING"                          
##  [20] "DRY MICROBURST"                    
##  [21] "DUST DEVIL"                        
##  [22] "DUST STORM"                        
##  [23] "DUST STORM/HIGH WINDS"             
##  [24] "EXCESSIVE HEAT"                    
##  [25] "EXCESSIVE RAINFALL"                
##  [26] "EXCESSIVE SNOW"                    
##  [27] "EXCESSIVE WETNESS"                 
##  [28] "EXTREME COLD/WIND CHILL"           
##  [29] "FALLING SNOW/ICE"                  
##  [30] "FLASH FLOOD"                       
##  [31] "FLOOD"                             
##  [32] "FOG"                               
##  [33] "FOG AND COLD/WIND CHILLS"          
##  [34] "FREEZING FOG"                      
##  [35] "FREEZING RAIN"                     
##  [36] "FROST/FREEZE"                      
##  [37] "FUNNEL CLOUD"                      
##  [38] "GLAZE"                             
##  [39] "GLAZE ICE"                         
##  [40] "GRADIENT WIND"                     
##  [41] "GUSTNADO"                          
##  [42] "GUSTY WIND"                        
##  [43] "GUSTY WIND/HEAVY RAIN"             
##  [44] "GUSTY WIND/RAIN"                   
##  [45] "HAIL"                              
##  [46] "HEAT"                              
##  [47] "HEAVY MIX"                         
##  [48] "HEAVY RAIN"                        
##  [49] "HEAVY SEAS"                        
##  [50] "HEAVY SNOW"                        
##  [51] "HEAVY SWELLS"                      
##  [52] "HIGH"                              
##  [53] "HIGH SEAS"                         
##  [54] "HIGH SURF"                         
##  [55] "HIGH WATER"                        
##  [56] "HIGH WIND"                         
##  [57] "HURRICANE"                         
##  [58] "HURRICANE/TYPHOON"                 
##  [59] "HYPERTHERMIA/EXPOSURE"             
##  [60] "HYPOTHERMIA"                       
##  [61] "ICE"                               
##  [62] "ICE AND SNOW"                      
##  [63] "ICE FLOES"                         
##  [64] "ICE JAM"                           
##  [65] "ICE JAM FLOOD"                     
##  [66] "ICE ROADS"                         
##  [67] "ICE STORM"                         
##  [68] "ICE/STRONG WINDS"                  
##  [69] "LAKE-EFFECT SNOW"                  
##  [70] "LAKESHORE FLOOD"                   
##  [71] "LANDSLIDES"                        
##  [72] "LANDSLUMP"                         
##  [73] "LANDSPOUT"                         
##  [74] "LATE SEASON SNOW"                  
##  [75] "LIGHT FREEZING RAIN"               
##  [76] "LIGHT SNOW"                        
##  [77] "LIGHTNING"                         
##  [78] "LIGHTNING/HEAVY RAIN"              
##  [79] "MARINE ACCIDENT"                   
##  [80] "MARINE HAIL"                       
##  [81] "MARINE HIGH WIND"                  
##  [82] "MARINE MISHAP"                     
##  [83] "MARINE STRONG WIND"                
##  [84] "MARINE THUNDERSTORM WIND"          
##  [85] "MICROBURST"                        
##  [86] "MINOR FLOOD"                       
##  [87] "MIXED PRECIPITATION"               
##  [88] "MUD SLIDE"                         
##  [89] "MUD SLIDES FLOOD"                  
##  [90] "NON-SEVERE WIND"                   
##  [91] "NON-THUNDERSTORM WIND"             
##  [92] "OTHER"                             
##  [93] "RAIN"                              
##  [94] "RAIN/SNOW"                         
##  [95] "RAIN/WIND"                         
##  [96] "RAINSTORM"                         
##  [97] "RAPIDLY RISING WATER"              
##  [98] "RIP CURRENT"                       
##  [99] "ROCK SLIDE"                        
## [100] "ROGUE WAVE"                        
## [101] "ROUGH SEAS"                        
## [102] "SEICHE"                            
## [103] "SEVERE TURBULENCE"                 
## [104] "SLEET"                             
## [105] "SLEET/ICE STORM"                   
## [106] "SNOW"                              
## [107] "SNOW ACCUMULATION"                 
## [108] "SNOW SQUALL"                       
## [109] "SNOW/COLD"                         
## [110] "SNOW/FREEZING RAIN"                
## [111] "SNOW/HIGH WINDS"                   
## [112] "SNOW/ICE"                          
## [113] "SNOW/SLEET"                        
## [114] "SNOW/SLEET/FREEZING RAIN"          
## [115] "STORM FORCE WINDS"                 
## [116] "STORM SURGE"                       
## [117] "STORM SURGE/TIDE"                  
## [118] "STRONG WIND"                       
## [119] "THUNDERSTORM HAIL"                 
## [120] "THUNDERSTORM WIND"                 
## [121] "THUNDERSTORM WIND/FLOOD"           
## [122] "THUNDERSTORM WIND/LIGHTNING"       
## [123] "TIDAL FLOOD"                       
## [124] "TORNADO"                           
## [125] "TORNADOES, THUNDERSTORM WIND, HAIL"
## [126] "TORRENTIAL RAINFALL"               
## [127] "TROPICAL DEPRESSION"               
## [128] "TROPICAL STORM"                    
## [129] "TSUNAMI"                           
## [130] "TYPHOON"                           
## [131] "UNSEASONABLY WARM"                 
## [132] "UNSEASONABLY WARM AND DRY"         
## [133] "UNSEASONAL RAIN"                   
## [134] "VOLCANIC ASH"                      
## [135] "WARM WEATHER"                      
## [136] "WATERSPOUT"                        
## [137] "WET MICROBURST"                    
## [138] "WHIRLWIND"                         
## [139] "WILD FIRE"                         
## [140] "WIND"                              
## [141] "WIND AND WAVE"                     
## [142] "WIND STORM"                        
## [143] "WINTER STORM"                      
## [144] "WINTER WEATHER"