In this report, an analysis of the storm database taken from the U.S. National Oceanic and Atmospheric Administration (NOAA) is made with an estimation of the fatalities, injuries, property damage, and crop damage for each type of event (e.g., Flood, Typhoon, Tornado, Hail, Hurricane, etc.). With the data analysis it was determined which event is most harmful to US population (health) and which event has the largest economic consequences. The results showed that tornado is the most harmful event in respect to the US health (population) and Flood has the most severe impact in respect of Property and Cost damage.
##Data Processing 1. Load libraries
library(data.table)
library(ggplot2)
#fileURL <- "https://d396qusza40orc.cloudfront.net/repdata%2Fdata%2FStormData.csv.bz2"
#stormDataFile <- "data/storm-data.csv.bz2"
#download.file(url=fileURL, destfile = repdata_data_StormData.csv.bz2, method="curl")
if (!file.exists("StormData.csv.bz2")) {
fileUrl<-"https://d396qusza40orc.cloudfront.net/repdata%2Fdata%2FStormData.csv.bz2"
download.file(fileUrl, destfile="StormData.csv.bz2", method="curl")
# Exit if the file is not available
if (!file.exists("StormData.csv.bz2")) {
stop("Can't locate file 'StormData.csv.bz2'!")
}
}
data <- read.csv("StormData.csv.bz2", header = TRUE, sep=",")
colnames(data)
## [1] "STATE__" "BGN_DATE" "BGN_TIME" "TIME_ZONE" "COUNTY"
## [6] "COUNTYNAME" "STATE" "EVTYPE" "BGN_RANGE" "BGN_AZI"
## [11] "BGN_LOCATI" "END_DATE" "END_TIME" "COUNTY_END" "COUNTYENDN"
## [16] "END_RANGE" "END_AZI" "END_LOCATI" "LENGTH" "WIDTH"
## [21] "F" "MAG" "FATALITIES" "INJURIES" "PROPDMG"
## [26] "PROPDMGEXP" "CROPDMG" "CROPDMGEXP" "WFO" "STATEOFFIC"
## [31] "ZONENAMES" "LATITUDE" "LONGITUDE" "LATITUDE_E" "LONGITUDE_"
## [36] "REMARKS" "REFNUM"
#Subsetting the data
selection <- c('EVTYPE', 'FATALITIES', 'INJURIES', 'PROPDMG', 'PROPDMGEXP', 'CROPDMG', 'CROPDMGEXP')
data <- data[, selection]
summary(data)
## EVTYPE FATALITIES INJURIES PROPDMG
## Length:902297 Min. : 0.0000 Min. : 0.0000 Min. : 0.00
## Class :character 1st Qu.: 0.0000 1st Qu.: 0.0000 1st Qu.: 0.00
## Mode :character Median : 0.0000 Median : 0.0000 Median : 0.00
## Mean : 0.0168 Mean : 0.1557 Mean : 12.06
## 3rd Qu.: 0.0000 3rd Qu.: 0.0000 3rd Qu.: 0.50
## Max. :583.0000 Max. :1700.0000 Max. :5000.00
## PROPDMGEXP CROPDMG CROPDMGEXP
## Length:902297 Min. : 0.000 Length:902297
## Class :character 1st Qu.: 0.000 Class :character
## Mode :character Median : 0.000 Mode :character
## Mean : 1.527
## 3rd Qu.: 0.000
## Max. :990.000
data <- as.data.table(data)
data <- data[(EVTYPE != "?" & (INJURIES > 0 | FATALITIES > 0 | PROPDMG > 0 | CROPDMG > 0)),
c("EVTYPE", "FATALITIES", "INJURIES", "PROPDMG", "PROPDMGEXP", "CROPDMG", "CROPDMGEXP")]
#convert the exponent values from K, M, B to 1000, 1000000, and 1000000000
cols <- c("PROPDMGEXP", "CROPDMGEXP")
data[, (cols) := c(lapply(.SD, toupper)), .SDcols = cols]
PROPDMGKey <- c("\"\"" = 10^0,
"-" = 10^0, "+" = 10^0, "0" = 10^0, "1" = 10^1, "2" = 10^2, "3" = 10^3,
"4" = 10^4, "5" = 10^5, "6" = 10^6, "7" = 10^7, "8" = 10^8, "9" = 10^9,
"H" = 10^2, "K" = 10^3, "M" = 10^6, "B" = 10^9)
CROPDMGKey <- c("\"\"" = 10^0, "?" = 10^0, "0" = 10^0, "K" = 10^3, "M" = 10^6, "B" = 10^9)
data[, PROPDMGEXP := PROPDMGKey[as.character(data[,PROPDMGEXP])]]
data[is.na(PROPDMGEXP), PROPDMGEXP := 10^0 ]
data[, CROPDMGEXP := CROPDMGKey[as.character(data[,CROPDMGEXP])] ]
data[is.na(CROPDMGEXP), CROPDMGEXP := 10^0 ]
data <- data[, .(EVTYPE, FATALITIES, INJURIES, PROPDMG, PROPDMGEXP, PROPCOST = PROPDMG * PROPDMGEXP, CROPDMG, CROPDMGEXP, CROPCOST = CROPDMG * CROPDMGEXP)]
Health <- data[, .(FATALITIES = sum(FATALITIES), INJURIES = sum(INJURIES), TOTAL_HEALTH_IMPACTS = sum(FATALITIES) + sum(INJURIES)), by = .(EVTYPE)]
Health <- Health[order(-TOTAL_HEALTH_IMPACTS), ]
Health <- Health[1:10, ]
head(Health, 10)
## EVTYPE FATALITIES INJURIES TOTAL_HEALTH_IMPACTS
## 1: TORNADO 5633 91346 96979
## 2: EXCESSIVE HEAT 1903 6525 8428
## 3: TSTM WIND 504 6957 7461
## 4: FLOOD 470 6789 7259
## 5: LIGHTNING 816 5230 6046
## 6: HEAT 937 2100 3037
## 7: FLASH FLOOD 978 1777 2755
## 8: ICE STORM 89 1975 2064
## 9: THUNDERSTORM WIND 133 1488 1621
## 10: WINTER STORM 206 1321 1527
Eco_Impact <- data[, .(PROPCOST = sum(PROPCOST), CROPCOST = sum(CROPCOST), TOTAL_ECO_IMPACTS = sum(PROPCOST) + sum(CROPCOST)), by = .(EVTYPE)]
Eco_Impact <- Eco_Impact[order(-TOTAL_ECO_IMPACTS), ]
Eco_Impact <- Eco_Impact[1:10, ]
head(Eco_Impact, 10)
## EVTYPE PROPCOST CROPCOST TOTAL_ECO_IMPACTS
## 1: FLOOD 144657709807 5661968450 150319678257
## 2: HURRICANE/TYPHOON 69305840000 2607872800 71913712800
## 3: TORNADO 56947380677 414953270 57362333947
## 4: STORM SURGE 43323536000 5000 43323541000
## 5: HAIL 15735267513 3025954473 18761221986
## 6: FLASH FLOOD 16822673979 1421317100 18243991079
## 7: DROUGHT 1046106000 13972566000 15018672000
## 8: HURRICANE 11868319010 2741910000 14610229010
## 9: RIVER FLOOD 5118945500 5029459000 10148404500
## 10: ICE STORM 3944927860 5022113500 8967041360
Fatalities and injuries have the most harmful impact on population health. The results below display the 10 most harmful weather events in terms of population health in the U.S.
Health_Consequences <- melt(Health, id.vars = "EVTYPE", variable.name = "Fatalities_or_Injuries")
ggplot(Health_Consequences, aes(x = reorder(EVTYPE, -value), y = value)) +
geom_bar(stat = "identity", aes(fill = Fatalities_or_Injuries), position = "dodge") +
ylab("Total Injuries/Fatalities") +
xlab("Event Type") +
theme(axis.text.x = element_text(angle=45, hjust=1)) +
ggtitle("US Weather Events that are Most Harmful to Population") +
theme(plot.title = element_text(hjust = 0.5))
### Event Types with Greatest Economic Consequences
Property and crop damage have the most harmful impact on the economy. The results below display the 10 most harmful weather events in terms economic consequences in the U.S.
Eco_Consequences <- melt(Eco_Impact, id.vars = "EVTYPE", variable.name = "Damage_Type")
ggplot(Eco_Consequences, aes(x = reorder(EVTYPE, -value), y = value/1e9)) +
geom_bar(stat = "identity", aes(fill = Damage_Type), position = "dodge") +
ylab("Cost/Damage (in billion USD)") +
xlab("Event Type") +
theme(axis.text.x = element_text(angle=45, hjust=1)) +
ggtitle("US Weather Events that have the Greatest Economic consequences") +
theme(plot.title = element_text(hjust = 0.5))
## Conclusion
Based on the above analysis the following conclusions can be drawn:
Question 1: Which types of weather events are most harmful to population health?
Tornadoes are responsible for the greatest number of fatalities and injuries.
Question 2: Which types of weather events have the greatest economic consequences?
Floods are responsible for causing the most property damage and crop damage costs.