require(knitr)
## Loading required package: knitr
opts_chunk$set(echo = TRUE, cache = TRUE, cache.path = "cache/", fig.path = "figure/")
This code can be found on github.
Storms and other severe weather events can affect both public health and economy on communities and municipalities level. Those events can result in fatalities, injuries, and property damage. Preventing such outcomes to the extent possible is a key concern.
This report explores the U.S. National Oceanic and Atmospheric Administration’s (NOAA) storm database, tracking 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. The data analysis we address the following questions:
Aim of this report is to support preparation for severe weather (at communities and municipalities level), especially resources prioritisation for different types of events.
library(data.table)
## Warning: package 'data.table' was built under R version 3.2.2
#rm(list = ls(all = TRUE)) #clear environment
setwd("d:/tmp/Dropbox/Edu/Coursea/DataScienceSpecialization/ReproducibleResearch/")
Mydir<-getwd()
if (!file.exists("./Storm.bz2")) {#have we got data?
DataUrl<-'https://d396qusza40orc.cloudfront.net/repdata%2Fdata%2FStormData.csv.bz2'
download.file(DataUrl,destfile = './Storm.bz2') #if not get the course data
}
DataUrl<-'./Storm.bz2'
Lets understand the data, by first treading the small subset
Data<-read.table(DataUrl,sep=",",header = T,nrows = 1400,na.strings = "NA") #check what we got
#summary(Data)
DataNames<-names(Data) #get col names
DataClass<-as.character(sapply(Data,class)) #get col classes
DataClass
## [1] "numeric" "factor" "integer" "factor" "numeric" "factor" "factor"
## [8] "factor" "numeric" "logical" "logical" "logical" "logical" "numeric"
## [15] "logical" "numeric" "logical" "logical" "numeric" "numeric" "integer"
## [22] "numeric" "numeric" "numeric" "numeric" "factor" "numeric" "logical"
## [29] "logical" "logical" "logical" "numeric" "numeric" "numeric" "numeric"
## [36] "logical" "numeric"
There are a lot of columns in data that needs processing. Also it looks like not all classess are properly recognised.
To simply the process, I will only extract:
I will simplify extraction by treating everything as strings and converting things if needed later. This is possible, as data set will fit in the memory, but not the best approach.
#define class types
#DataClass[1:37]<-'character'
#DataClass[c(23,24,25,27,29)]<-'numeric' #"FATALITIES" "INJURIES" "PROPDMG" "CROPDMG" "WFO"
##problems with some columns, just ingore and use whatever pc came up with
#,colClasses =DataClass)
DataClass[1:37]<-'character'
Data<-read.table(DataUrl,sep=",",header = T,na.strings = "NA",colClasses =DataClass)
#createDate
Data$Date<-as.POSIXct(paste(Data$BGN_DATE), format="%m/%d/%Y 0:00:00")
#Data$Date<-as.POSIXct(paste(Data$BGN_DATE,Data$BGN_TIME), format="%m/%d/%Y 0:00:00 %H%M")
#keep only listed columns
Data<-Data[,c("Date","COUNTYNAME","STATE","EVTYPE","FATALITIES","INJURIES","PROPDMG","PROPDMGEXP","CROPDMG","CROPDMGEXP","REMARKS")]
Lets explore information about Property and Crop damage. Each consist of two fields (CROPDMG | PROPDMG) and (PROPDMGEXP | CROPDMGEXP). The latter should only be K,M,B (kilo, mil, bil). Lets see how much other values are affecting us
NoOfRecords<-length(Data$PROPDMGEXP)
properExp = c("K","M","B","k","b","")
#look at PROPDMGEXP and CROPDMGEXP, is everything ok?
levels(factor(Data$PROPDMGEXP))
## [1] "" "-" "?" "+" "0" "1" "2" "3" "4" "5" "6" "7" "8" "B" "h" "H" "K"
## [18] "m" "M"
levels(factor(Data$CROPDMGEXP))
## [1] "" "?" "0" "2" "B" "k" "K" "m" "M"
sum(!(Data$PROPDMGEXP %in% properExp))/NoOfRecords
## [1] 0.0003635167
sum(!(Data$CROPDMGEXP %in% properExp))/NoOfRecords
## [1] 3.103191e-05
There is a bit of messy data in the dataset. Database description indicate prior 1996 data was kept in paper form and might be not reliable (input erors), it is also limited to tornado, thunderstorms and hails. Lets use the same characteristics to test post 1996 data.
DataLimit<-Data$Date>as.POSIXct("1996-01-01") #mask all data before 1996
sum(!(Data$PROPDMGEXP[DataLimit] %in% properExp))
## [1] 1
sum(!(Data$CROPDMGEXP[DataLimit] %in% properExp))
## [1] 0
Given results, lets focus then on post-1996.
Datatmp<-Data
Data<-Data[DataLimit,]
Lets calculate total building and crop damage. I assume that EXP that are not (K,M,B) are ==1.
GetDamage <- function(cost,cost_exp){
TotalCost <- as.numeric(cost)
mask<-cost_exp %in% c("K")
values<-TotalCost[mask]*10^3
TotalCost[mask] <- values
mask<-cost_exp %in% c("M")
values<-TotalCost[mask]*10^6
TotalCost[mask] <- values
mask<-cost_exp %in% c("B")
values<-TotalCost[mask]*10^9
TotalCost[mask] <- values
TotalCost
}
levels(factor(Data$PROPDMGEXP))
## [1] "" "0" "B" "K" "M"
Data$PropertyDamage<-GetDamage(Data$PROPDMG,Data$PROPDMGEXP)
levels(factor(Data$CROPDMGEXP))
## [1] "" "B" "K" "M"
Data$CropDamage<-GetDamage(Data$CROPDMG,Data$CROPDMGEXP)
class(Data$EVTYPE)
## [1] "character"
Property damage seems to have one visible outlayer. There is no outlayer in CropDamage
CropDamage <- as.numeric(Data$CROPDMG)
mask<-which(Data$CROPDMGEXP %in% c("K"))
values<-CropDamage[mask]*10^3
CropDamage[mask] <- values
mask<-Data$CROPDMGEXP %in% c("M")
values<-CropDamage[mask]*10^6
CropDamage[mask] <- values
mask<-which(Data$CROPDMGEXP %in% c("B"))
values<-CropDamage[mask]*10^9
CropDamage[mask] <- values
Health cost is defined as number of ppl killed or injured during the incidents.
levels(factor(Data$EVTYPE))
## [1] " HIGH SURF ADVISORY" " COASTAL FLOOD"
## [3] " FLASH FLOOD" " LIGHTNING"
## [5] " TSTM WIND" " TSTM WIND (G45)"
## [7] " WATERSPOUT" " WIND"
## [9] "ABNORMAL WARMTH" "ABNORMALLY DRY"
## [11] "ABNORMALLY WET" "ACCUMULATED SNOWFALL"
## [13] "AGRICULTURAL FREEZE" "ASTRONOMICAL HIGH TIDE"
## [15] "ASTRONOMICAL LOW TIDE" "AVALANCHE"
## [17] "Beach Erosion" "BEACH EROSION"
## [19] "BITTER WIND CHILL" "BITTER WIND CHILL TEMPERATURES"
## [21] "Black Ice" "BLACK ICE"
## [23] "BLIZZARD" "Blizzard Summary"
## [25] "BLOW-OUT TIDE" "BLOW-OUT TIDES"
## [27] "BLOWING DUST" "blowing snow"
## [29] "Blowing Snow" "BRUSH FIRE"
## [31] "COASTAL FLOODING/EROSION" "COASTAL EROSION"
## [33] "Coastal Flood" "COASTAL FLOOD"
## [35] "coastal flooding" "Coastal Flooding"
## [37] "COASTAL FLOODING" "COASTAL FLOODING/EROSION"
## [39] "Coastal Storm" "COASTAL STORM"
## [41] "COASTALFLOOD" "COASTALSTORM"
## [43] "Cold" "COLD"
## [45] "Cold and Frost" "COLD AND FROST"
## [47] "COLD AND SNOW" "Cold Temperature"
## [49] "COLD TEMPERATURES" "COLD WEATHER"
## [51] "COLD WIND CHILL TEMPERATURES" "COLD/WIND CHILL"
## [53] "COOL SPELL" "CSTL FLOODING/EROSION"
## [55] "DAM BREAK" "Damaging Freeze"
## [57] "DAMAGING FREEZE" "DENSE FOG"
## [59] "DENSE SMOKE" "DOWNBURST"
## [61] "DRIEST MONTH" "Drifting Snow"
## [63] "DROUGHT" "DROWNING"
## [65] "DRY" "DRY CONDITIONS"
## [67] "DRY MICROBURST" "DRY SPELL"
## [69] "DRY WEATHER" "DRYNESS"
## [71] "DUST DEVEL" "Dust Devil"
## [73] "DUST DEVIL" "DUST STORM"
## [75] "Early Frost" "EARLY RAIN"
## [77] "Early snowfall" "EARLY SNOWFALL"
## [79] "Erosion/Cstl Flood" "Excessive Cold"
## [81] "EXCESSIVE HEAT" "EXCESSIVE HEAT/DROUGHT"
## [83] "EXCESSIVE RAIN" "EXCESSIVE RAINFALL"
## [85] "EXCESSIVE SNOW" "EXCESSIVELY DRY"
## [87] "Extended Cold" "Extreme Cold"
## [89] "EXTREME COLD" "EXTREME COLD/WIND CHILL"
## [91] "EXTREME WIND CHILL" "EXTREME WINDCHILL"
## [93] "EXTREME WINDCHILL TEMPERATURES" "EXTREMELY WET"
## [95] "FALLING SNOW/ICE" "FIRST FROST"
## [97] "FIRST SNOW" "FLASH FLOOD"
## [99] "FLASH FLOOD/FLOOD" "FLASH FLOODING"
## [101] "Flood" "FLOOD"
## [103] "Flood/Flash Flood" "FLOOD/FLASH/FLOOD"
## [105] "Flood/Strong Wind" "FOG"
## [107] "Freeze" "FREEZE"
## [109] "Freezing drizzle" "Freezing Drizzle"
## [111] "FREEZING DRIZZLE" "Freezing Fog"
## [113] "FREEZING FOG" "Freezing rain"
## [115] "Freezing Rain" "FREEZING RAIN"
## [117] "FREEZING RAIN/SLEET" "Freezing Spray"
## [119] "Frost" "FROST"
## [121] "Frost/Freeze" "FROST/FREEZE"
## [123] "Funnel Cloud" "FUNNEL CLOUD"
## [125] "FUNNEL CLOUDS" "Glaze"
## [127] "GLAZE" "gradient wind"
## [129] "Gradient wind" "GRADIENT WIND"
## [131] "GUSTY LAKE WIND" "GUSTY THUNDERSTORM WIND"
## [133] "GUSTY THUNDERSTORM WINDS" "Gusty Wind"
## [135] "GUSTY WIND" "GUSTY WIND/HAIL"
## [137] "GUSTY WIND/HVY RAIN" "Gusty wind/rain"
## [139] "Gusty winds" "Gusty Winds"
## [141] "GUSTY WINDS" "HAIL"
## [143] "Hail(0.75)" "HAIL/WIND"
## [145] "HARD FREEZE" "HAZARDOUS SURF"
## [147] "HEAT" "Heat Wave"
## [149] "HEAT WAVE" "Heatburst"
## [151] "Heavy Precipitation" "Heavy rain"
## [153] "Heavy Rain" "HEAVY RAIN"
## [155] "Heavy Rain and Wind" "HEAVY RAIN EFFECTS"
## [157] "Heavy Rain/High Surf" "HEAVY RAIN/WIND"
## [159] "HEAVY RAINFALL" "HEAVY SEAS"
## [161] "HEAVY SNOW" "Heavy snow shower"
## [163] "HEAVY SNOW SQUALLS" "Heavy Surf"
## [165] "HEAVY SURF" "Heavy surf and wind"
## [167] "HEAVY SURF/HIGH SURF" "HIGH SWELLS"
## [169] "HIGH SEAS" "High Surf"
## [171] "HIGH SURF" "HIGH SURF ADVISORIES"
## [173] "HIGH SURF ADVISORY" "HIGH SWELLS"
## [175] "HIGH WATER" "High Wind"
## [177] "HIGH WIND" "HIGH WIND (G40)"
## [179] "HIGH WINDS" "Hot and Dry"
## [181] "HOT SPELL" "HOT WEATHER"
## [183] "HURRICANE" "Hurricane Edouard"
## [185] "HURRICANE/TYPHOON" "HYPERTHERMIA/EXPOSURE"
## [187] "Hypothermia/Exposure" "HYPOTHERMIA/EXPOSURE"
## [189] "ICE" "Ice Fog"
## [191] "ICE JAM" "Ice jam flood (minor"
## [193] "ICE ON ROAD" "ICE PELLETS"
## [195] "ICE ROADS" "ICE STORM"
## [197] "Ice/Snow" "ICE/SNOW"
## [199] "Icestorm/Blizzard" "Icy Roads"
## [201] "ICY ROADS" "LAKE-EFFECT SNOW"
## [203] "Lake Effect Snow" "LAKE EFFECT SNOW"
## [205] "LAKESHORE FLOOD" "LANDSLIDE"
## [207] "LANDSLIDES" "Landslump"
## [209] "LANDSLUMP" "LANDSPOUT"
## [211] "Late-season Snowfall" "LATE FREEZE"
## [213] "LATE SEASON HAIL" "LATE SEASON SNOW"
## [215] "Late Season Snowfall" "LATE SNOW"
## [217] "LIGHT FREEZING RAIN" "Light snow"
## [219] "Light Snow" "LIGHT SNOW"
## [221] "Light Snow/Flurries" "LIGHT SNOW/FREEZING PRECIP"
## [223] "Light Snowfall" "LIGHTNING"
## [225] "LOCALLY HEAVY RAIN" "Marine Accident"
## [227] "MARINE HAIL" "MARINE HIGH WIND"
## [229] "MARINE STRONG WIND" "MARINE THUNDERSTORM WIND"
## [231] "MARINE TSTM WIND" "Metro Storm, May 26"
## [233] "Microburst" "Mild and Dry Pattern"
## [235] "Minor Flooding" "MIXED PRECIP"
## [237] "Mixed Precipitation" "MIXED PRECIPITATION"
## [239] "MODERATE SNOW" "MODERATE SNOWFALL"
## [241] "MONTHLY PRECIPITATION" "Monthly Rainfall"
## [243] "MONTHLY RAINFALL" "MONTHLY SNOWFALL"
## [245] "MONTHLY TEMPERATURE" "Mountain Snows"
## [247] "MUD SLIDE" "Mudslide"
## [249] "MUDSLIDE" "MUDSLIDE/LANDSLIDE"
## [251] "Mudslides" "MUDSLIDES"
## [253] "No Severe Weather" "NON-SEVERE WIND DAMAGE"
## [255] "NON-TSTM WIND" "NON SEVERE HAIL"
## [257] "NON TSTM WIND" "NONE"
## [259] "NORTHERN LIGHTS" "Other"
## [261] "OTHER" "PATCHY DENSE FOG"
## [263] "PATCHY ICE" "Prolong Cold"
## [265] "PROLONG COLD" "PROLONG WARMTH"
## [267] "PROLONGED RAIN" "RAIN"
## [269] "RAIN (HEAVY)" "Rain Damage"
## [271] "RAIN/SNOW" "RECORD COLD"
## [273] "Record Cold" "RECORD COLD"
## [275] "RECORD COOL" "Record dry month"
## [277] "RECORD DRYNESS" "Record Heat"
## [279] "RECORD HEAT" "Record High"
## [281] "RECORD LOW RAINFALL" "Record May Snow"
## [283] "RECORD PRECIPITATION" "RECORD RAINFALL"
## [285] "RECORD SNOW" "RECORD SNOWFALL"
## [287] "Record temperature" "RECORD TEMPERATURE"
## [289] "Record Temperatures" "RECORD TEMPERATURES"
## [291] "RECORD WARM" "RECORD WARM TEMPS."
## [293] "Record Warmth" "RECORD WARMTH"
## [295] "Record Winter Snow" "RED FLAG CRITERIA"
## [297] "RED FLAG FIRE WX" "REMNANTS OF FLOYD"
## [299] "RIP CURRENT" "RIP CURRENTS"
## [301] "RIVER FLOOD" "River Flooding"
## [303] "RIVER FLOODING" "ROCK SLIDE"
## [305] "ROGUE WAVE" "ROUGH SEAS"
## [307] "ROUGH SURF" "Saharan Dust"
## [309] "SAHARAN DUST" "Seasonal Snowfall"
## [311] "SEICHE" "SEVERE THUNDERSTORM"
## [313] "SEVERE THUNDERSTORMS" "SLEET"
## [315] "SLEET STORM" "SLEET/FREEZING RAIN"
## [317] "small hail" "Small Hail"
## [319] "SMALL HAIL" "Sml Stream Fld"
## [321] "SMOKE" "Snow"
## [323] "SNOW" "Snow Accumulation"
## [325] "SNOW ADVISORY" "Snow and Ice"
## [327] "SNOW AND ICE" "Snow and sleet"
## [329] "SNOW AND SLEET" "SNOW DROUGHT"
## [331] "SNOW SHOWERS" "SNOW SQUALL"
## [333] "Snow squalls" "Snow Squalls"
## [335] "SNOW SQUALLS" "SNOW/BLOWING SNOW"
## [337] "SNOW/FREEZING RAIN" "SNOW/ICE"
## [339] "SNOW/SLEET" "SNOWMELT FLOODING"
## [341] "STORM SURGE" "STORM SURGE/TIDE"
## [343] "STREET FLOODING" "Strong Wind"
## [345] "STRONG WIND" "STRONG WIND GUST"
## [347] "Strong winds" "Strong Winds"
## [349] "STRONG WINDS" "Summary August 10"
## [351] "Summary August 11" "Summary August 17"
## [353] "Summary August 2-3" "Summary August 21"
## [355] "Summary August 28" "Summary August 4"
## [357] "Summary August 7" "Summary August 9"
## [359] "Summary Jan 17" "Summary July 23-24"
## [361] "Summary June 18-19" "Summary June 5-6"
## [363] "Summary June 6" "Summary of April 12"
## [365] "Summary of April 13" "Summary of April 21"
## [367] "Summary of April 27" "Summary of April 3rd"
## [369] "Summary of August 1" "Summary of July 11"
## [371] "Summary of July 2" "Summary of July 22"
## [373] "Summary of July 26" "Summary of July 29"
## [375] "Summary of July 3" "Summary of June 10"
## [377] "Summary of June 11" "Summary of June 12"
## [379] "Summary of June 13" "Summary of June 15"
## [381] "Summary of June 16" "Summary of June 18"
## [383] "Summary of June 23" "Summary of June 24"
## [385] "Summary of June 3" "Summary of June 30"
## [387] "Summary of June 4" "Summary of June 6"
## [389] "Summary of March 14" "Summary of March 23"
## [391] "Summary of March 24" "SUMMARY OF MARCH 24-25"
## [393] "SUMMARY OF MARCH 27" "SUMMARY OF MARCH 29"
## [395] "Summary of May 10" "Summary of May 13"
## [397] "Summary of May 14" "Summary of May 22"
## [399] "Summary of May 22 am" "Summary of May 22 pm"
## [401] "Summary of May 26 am" "Summary of May 26 pm"
## [403] "Summary of May 31 am" "Summary of May 31 pm"
## [405] "Summary of May 9-10" "Summary Sept. 25-26"
## [407] "Summary September 20" "Summary September 23"
## [409] "Summary September 3" "Summary September 4"
## [411] "Summary: Nov. 16" "Summary: Nov. 6-7"
## [413] "Summary: Oct. 20-21" "Summary: October 31"
## [415] "Summary: Sept. 18" "Temperature record"
## [417] "Thundersnow shower" "THUNDERSTORM"
## [419] "Thunderstorm Wind" "THUNDERSTORM WIND"
## [421] "THUNDERSTORM WIND (G40)" "THUNDERSTORMS"
## [423] "Tidal Flooding" "TIDAL FLOODING"
## [425] "TORNADO" "TORNADO DEBRIS"
## [427] "Torrential Rainfall" "TROPICAL DEPRESSION"
## [429] "TROPICAL STORM" "TSTM"
## [431] "TSTM HEAVY RAIN" "Tstm Wind"
## [433] "TSTM WIND" "TSTM WIND (G45)"
## [435] "TSTM WIND (41)" "TSTM WIND (G35)"
## [437] "TSTM WIND (G40)" "TSTM WIND (G45)"
## [439] "TSTM WIND 40" "TSTM WIND 45"
## [441] "TSTM WIND AND LIGHTNING" "TSTM WIND G45"
## [443] "TSTM WIND/HAIL" "TSTM WINDS"
## [445] "TSTM WND" "TSUNAMI"
## [447] "TYPHOON" "Unseasonable Cold"
## [449] "UNSEASONABLY COLD" "UNSEASONABLY COOL"
## [451] "UNSEASONABLY COOL & WET" "UNSEASONABLY DRY"
## [453] "UNSEASONABLY HOT" "UNSEASONABLY WARM"
## [455] "UNSEASONABLY WARM & WET" "UNSEASONABLY WARM AND DRY"
## [457] "UNSEASONABLY WARM YEAR" "UNSEASONABLY WARM/WET"
## [459] "UNSEASONABLY WET" "UNSEASONAL LOW TEMP"
## [461] "UNSEASONAL RAIN" "UNUSUAL WARMTH"
## [463] "UNUSUAL/RECORD WARMTH" "UNUSUALLY COLD"
## [465] "UNUSUALLY LATE SNOW" "UNUSUALLY WARM"
## [467] "Urban flood" "Urban Flood"
## [469] "URBAN FLOOD" "Urban Flooding"
## [471] "URBAN/SMALL STRM FLDG" "URBAN/SML STREAM FLD"
## [473] "URBAN/SML STREAM FLDG" "URBAN/STREET FLOODING"
## [475] "VERY DRY" "VERY WARM"
## [477] "VOG" "Volcanic Ash"
## [479] "VOLCANIC ASH" "Volcanic Ash Plume"
## [481] "VOLCANIC ASHFALL" "VOLCANIC ERUPTION"
## [483] "WAKE LOW WIND" "WALL CLOUD"
## [485] "WARM WEATHER" "WATERSPOUT"
## [487] "WATERSPOUTS" "wet micoburst"
## [489] "WET MICROBURST" "Wet Month"
## [491] "Wet Year" "Whirlwind"
## [493] "WHIRLWIND" "WILD/FOREST FIRE"
## [495] "WILDFIRE" "Wind"
## [497] "WIND" "WIND ADVISORY"
## [499] "WIND AND WAVE" "WIND CHILL"
## [501] "Wind Damage" "WIND DAMAGE"
## [503] "WIND GUSTS" "WINDS"
## [505] "WINTER MIX" "WINTER STORM"
## [507] "Winter Weather" "WINTER WEATHER"
## [509] "WINTER WEATHER MIX" "WINTER WEATHER/MIX"
## [511] "WINTERY MIX" "Wintry mix"
## [513] "Wintry Mix" "WINTRY MIX"
## [515] "WND"
There should be 48 event types according to [NOAA Storm data manual][NOAA Storm data] but we observe 515 types.
#events as defined in Storm event table (NOAA Storm data, page 6)
StormEvents<-c("Astronomical Low","Avalanche","Blizzard ","Coastal Flood","Cold/Wind Chill","Debris Flow","Dense Fog","Dense Smoke","Drought ","Dust Devil","Dust Storm","Excessive Heat","Extreme Cold/Wind","Flash Flood","Flood C","Frost/Freeze","Funnel Cloud","Freezing Fog","Hail ","Heat","Heavy Rain","Heavy Snow","High Surf","High Wind","Hurricane (Typhoon)","Ice Storm","Lake-Effect Snow","Lakeshore Flood","Lightning ","Marine Hail","Marine High","Marine Strong","Marine Thunderstorm","Rip Current","Seiche","Sleet","Storm Surge/Tide","Strong Wind","Thunderstorm Wind","Tornado ","Tropical Depression","Tropical Storm","Tsunami ","Volcanic Ash","Waterspout","Wildfire ","Winter Storm","Winter Weather")
To simplify following analysis I will only analyse events that:
selData <- Data[which(Data$INJURIES > 0 | Data$FATALITIES > 0 | Data$PropertyDamage > 1 | Data$CropDamage > 1),]
All “summary” events are gone now and we have 515 event types now.
Tsunami<-grep("^TST",selData$EVTYPE, ignore.case = T)
Cold <-grep("Cold",selData$EVTYPE, ignore.case = T)
Wind <- grep("wind",selData$EVTYPE, ignore.case = T)
Snow <- grep("snow",selData$EVTYPE, ignore.case = T)
Frost <- grep("frost",selData$EVTYPE, ignore.case = T)
Freeze <- grep("Freeze",selData$EVTYPE, ignore.case = T)
HSurf <- grep("Surf",selData$EVTYPE, ignore.case = T)
Flood <- grep("flood",selData$EVTYPE, ignore.case = T)
Flood2 <- grep("fld",selData$EVTYPE, ignore.case = T)
Tide <- grep("tide",selData$EVTYPE, ignore.case = T)
Winter <- grep("MIX",selData$EVTYPE, ignore.case = T)
Winter2 <- grep("ice",selData$EVTYPE, ignore.case = T)
Winter3 <- grep("Winter",selData$EVTYPE, ignore.case = T)
fog <- grep("fog",selData$EVTYPE, ignore.case = T)
Hail <- grep("Hail",selData$EVTYPE, ignore.case = T)
Rain <- grep("rain",selData$EVTYPE, ignore.case = T)
Hot <- grep("warm",selData$EVTYPE, ignore.case = T)
Hot2 <- grep("heat",selData$EVTYPE, ignore.case = T)
typhoon <- grep("typhoon",selData$EVTYPE, ignore.case = T)
slide <- grep("slide",selData$EVTYPE, ignore.case = T)
dust <- grep("dust",selData$EVTYPE, ignore.case = T)
storm <- grep("storm",selData$EVTYPE, ignore.case = T)
selData$EVTYPE[Tsunami]<-"Tsunami"
selData$EVTYPE[Cold]<-"Winter"
selData$EVTYPE[Wind]<-"Wind"
selData$EVTYPE[Snow]<-"Snow"
selData$EVTYPE[Frost]<-"Frost"
selData$EVTYPE[Freeze]<-"Frost"
selData$EVTYPE[HSurf]<-"High Surf"
selData$EVTYPE[Flood]<-"Flood"
selData$EVTYPE[Tide]<-"Tide"
selData$EVTYPE[Winter]<-"Winter"
selData$EVTYPE[Winter2]<-"Winter"
selData$EVTYPE[Winter3]<-"Winter"
selData$EVTYPE[fog]<-"Fog"
selData$EVTYPE[Hail]<-"Hail"
selData$EVTYPE[Rain]<-"Rain"
selData$EVTYPE[Hot]<-"Hot"
selData$EVTYPE[Hot2]<-"Hot"
selData$EVTYPE[typhoon]<-"typhoon"
selData$EVTYPE[Flood2]<-"Flood"
selData$EVTYPE[slide]<-"slide"
selData$EVTYPE[dust]<-"dust"
selData$EVTYPE[storm]<-"storm"
#levels(factor(selData$EVTYPE))
Let calculate total for both economic and health effects. We will only plot top 5 events.
selData$TotalDamage<-selData$PropertyDamage+selData$CropDamage
totalEconomic<-aggregate(selData$TotalDamage,by=list(Event=selData$EVTYPE),FUN=sum, na.rm=TRUE, simplify = TRUE)
#sort
totalEconomic<-totalEconomic[with(totalEconomic, order(-x)),]
#select top 5
totalEconomic<-totalEconomic[1:5,]
#plot it
barplot(totalEconomic$x,names.arg = totalEconomic$Event, main = "Most economically affecting events")
Lets calculate total health effects. Here as well we will only plot top 5 events.
selData$FATALITIES<-as.integer(selData$FATALITIES)
selData$NJURIES<-as.integer(selData$INJURIES)
totalDead<-aggregate(selData$FATALITIES,by=list(Event=selData$EVTYPE),FUN=sum, na.rm=TRUE, simplify = TRUE)
totalDead<-totalDead[with(totalDead, order(-x)),]
#select top 5
totalDead<-totalDead[1:5,]
#plot it
barplot(totalDead$x,names.arg = totalDead$Event, main = "Most deadly events")
#no idea why I need to convert to integer again
totalInjury<-aggregate(as.integer(selData$INJURIES),by=list(Event=selData$EVTYPE),FUN=sum, na.rm=TRUE, simplify = TRUE)
totalInjury<-totalInjury[with(totalInjury, order(-x)),]
#select top 5
totalInjury<-totalInjury[1:5,]
#plot it
barplot(totalInjury$x,names.arg = totalInjury$Event, main = "Most injury prone events")
Storms and other severe weather events can cause both public health and economic problems for communities and municipalities. Many severe events can result in fatalities, injuries, and property damage, and preventing such outcomes to the extent possible is a key concern.
Following assumptions have been made
Based on the analysis conducted the top three weather events in United States from 1950 untill 2011 that causes greatest economic consequences were flood, hurricane and tornado.
This is a very quick summary (due to time constrains) and more in-depth research is recommended.