Synopsis
This project analyzes data provided by the U.S. National Oceanic and Atmospheric Administration’s (NOAA) storm database. The data provides information about fatalities, injuries, and property and crop damage from various storm types.
In this project, I first identify the storm events that lead to the top 100 fatalities and injuries. Next, I find the storm events that produce the top 100 property damage and crop damage costs, as well as the top 100 total damage costs.
Data Processing
loc <- "/Users/lilafakharzadeh/Desktop"
setwd(loc)
dat<-read.csv("repdata_data_StormData.csv",header=TRUE)
library(ggplot2)
library(dplyr)
##
## Attaching package: 'dplyr'
## The following objects are masked from 'package:stats':
##
## filter, lag
## The following objects are masked from 'package:base':
##
## intersect, setdiff, setequal, union
library(plyr)
## -------------------------------------------------------------------------
## You have loaded plyr after dplyr - this is likely to cause problems.
## If you need functions from both plyr and dplyr, please load plyr first, then dplyr:
## library(plyr); library(dplyr)
## -------------------------------------------------------------------------
##
## Attaching package: 'plyr'
## The following objects are masked from 'package:dplyr':
##
## arrange, count, desc, failwith, id, mutate, rename, summarise,
## summarize
Across the United States, which types of events (as indicated in the EVTYPE variable) are most harmful with respect to population health?
Top 100 Rankings by number of fatalities
countDatFat<-aggregate(dat$FATALITIES, by=list(dat$EVTYPE),FUN=sum)
orderCountDatFat<-head(countDatFat[order(-countDatFat$x),],100)
Top 100 Rankings by number of Injuries
countDatInj<-aggregate(dat$INJURIES, by=list(dat$EVTYPE),FUN=sum)
orderCountDatInj<-head(countDatInj[order(-countDatInj$x),],100)
Merge fatality and injury rankings
orderCountDatFat$Type<-"FATALITIES"
orderCountDatInj$Type<-"INJURIES"
mergedFatInj<-rbind(orderCountDatFat,orderCountDatInj)
print(mergedFatInj)
## Group.1 x Type
## 834 TORNADO 5633 FATALITIES
## 130 EXCESSIVE HEAT 1903 FATALITIES
## 153 FLASH FLOOD 978 FATALITIES
## 275 HEAT 937 FATALITIES
## 464 LIGHTNING 816 FATALITIES
## 856 TSTM WIND 504 FATALITIES
## 170 FLOOD 470 FATALITIES
## 585 RIP CURRENT 368 FATALITIES
## 359 HIGH WIND 248 FATALITIES
## 19 AVALANCHE 224 FATALITIES
## 972 WINTER STORM 206 FATALITIES
## 586 RIP CURRENTS 204 FATALITIES
## 278 HEAT WAVE 172 FATALITIES
## 140 EXTREME COLD 160 FATALITIES
## 760 THUNDERSTORM WIND 133 FATALITIES
## 310 HEAVY SNOW 127 FATALITIES
## 141 EXTREME COLD/WIND CHILL 125 FATALITIES
## 676 STRONG WIND 103 FATALITIES
## 30 BLIZZARD 101 FATALITIES
## 350 HIGH SURF 101 FATALITIES
## 290 HEAVY RAIN 98 FATALITIES
## 142 EXTREME HEAT 96 FATALITIES
## 79 COLD/WIND CHILL 95 FATALITIES
## 427 ICE STORM 89 FATALITIES
## 957 WILDFIRE 75 FATALITIES
## 411 HURRICANE/TYPHOON 64 FATALITIES
## 786 THUNDERSTORM WINDS 64 FATALITIES
## 188 FOG 62 FATALITIES
## 402 HURRICANE 61 FATALITIES
## 848 TROPICAL STORM 58 FATALITIES
## 342 HEAVY SURF/HIGH SURF 42 FATALITIES
## 442 LANDSLIDE 38 FATALITIES
## 66 COLD 35 FATALITIES
## 376 HIGH WINDS 35 FATALITIES
## 877 TSUNAMI 33 FATALITIES
## 978 WINTER WEATHER 33 FATALITIES
## 888 UNSEASONABLY WARM AND DRY 29 FATALITIES
## 919 URBAN/SML STREAM FLD 28 FATALITIES
## 980 WINTER WEATHER/MIX 28 FATALITIES
## 842 TORNADOES, TSTM WIND, HAIL 25 FATALITIES
## 960 WIND 23 FATALITIES
## 117 DUST STORM 22 FATALITIES
## 164 FLASH FLOODING 19 FATALITIES
## 89 DENSE FOG 18 FATALITIES
## 146 EXTREME WINDCHILL 17 FATALITIES
## 177 FLOOD/FLASH FLOOD 17 FATALITIES
## 580 RECORD/EXCESSIVE HEAT 17 FATALITIES
## 244 HAIL 15 FATALITIES
## 72 COLD AND SNOW 14 FATALITIES
## 161 FLASH FLOOD/FLOOD 14 FATALITIES
## 488 MARINE STRONG WIND 14 FATALITIES
## 670 STORM SURGE 13 FATALITIES
## 955 WILD/FOREST FIRE 12 FATALITIES
## 671 STORM SURGE/TIDE 11 FATALITIES
## 886 UNSEASONABLY WARM 11 FATALITIES
## 489 MARINE THUNDERSTORM WIND 10 FATALITIES
## 976 WINTER STORMS 10 FATALITIES
## 490 MARINE TSTM WIND 9 FATALITIES
## 596 ROUGH SEAS 8 FATALITIES
## 851 TROPICAL STORM GORDON 8 FATALITIES
## 201 FREEZING RAIN 7 FATALITIES
## 222 GLAZE 7 FATALITIES
## 339 HEAVY SURF 7 FATALITIES
## 480 LOW TEMPERATURE 7 FATALITIES
## 487 MARINE MISHAP 7 FATALITIES
## 680 STRONG WINDS 7 FATALITIES
## 185 FLOODING 6 FATALITIES
## 405 HURRICANE ERIN 6 FATALITIES
## 417 ICE 6 FATALITIES
## 77 COLD WEATHER 5 FATALITIES
## 165 FLASH FLOODING/FLOOD 5 FATALITIES
## 280 HEAT WAVES 5 FATALITIES
## 348 HIGH SEAS 5 FATALITIES
## 435 ICY ROADS 5 FATALITIES
## 588 RIP CURRENTS/HEAVY SURF 5 FATALITIES
## 629 SNOW 5 FATALITIES
## 873 TSTM WIND/HAIL 5 FATALITIES
## 243 GUSTY WINDS 4 FATALITIES
## 279 HEAT WAVE DROUGHT 4 FATALITIES
## 373 HIGH WIND/SEAS 4 FATALITIES
## 415 Hypothermia/Exposure 4 FATALITIES
## 517 Mudslide 4 FATALITIES
## 544 RAIN/SNOW 4 FATALITIES
## 597 ROUGH SURF 4 FATALITIES
## 636 SNOW AND ICE 4 FATALITIES
## 54 COASTAL FLOOD 3 FATALITIES
## 60 COASTAL STORM 3 FATALITIES
## 65 Cold 3 FATALITIES
## 76 COLD WAVE 3 FATALITIES
## 101 DRY MICROBURST 3 FATALITIES
## 307 HEAVY SEAS 3 FATALITIES
## 340 Heavy surf and wind 3 FATALITIES
## 349 High Surf 3 FATALITIES
## 356 HIGH WATER 3 FATALITIES
## 366 HIGH WIND AND SEAS 3 FATALITIES
## 395 HIGH WINDS/SNOW 3 FATALITIES
## 416 HYPOTHERMIA/EXPOSURE 3 FATALITIES
## 936 WATERSPOUT 3 FATALITIES
## 943 WATERSPOUT/TORNADO 3 FATALITIES
## 954 WILD FIRES 3 FATALITIES
## 8341 TORNADO 91346 INJURIES
## 8561 TSTM WIND 6957 INJURIES
## 1701 FLOOD 6789 INJURIES
## 1301 EXCESSIVE HEAT 6525 INJURIES
## 4641 LIGHTNING 5230 INJURIES
## 2751 HEAT 2100 INJURIES
## 4271 ICE STORM 1975 INJURIES
## 1531 FLASH FLOOD 1777 INJURIES
## 7601 THUNDERSTORM WIND 1488 INJURIES
## 2441 HAIL 1361 INJURIES
## 9721 WINTER STORM 1321 INJURIES
## 4111 HURRICANE/TYPHOON 1275 INJURIES
## 3591 HIGH WIND 1137 INJURIES
## 3101 HEAVY SNOW 1021 INJURIES
## 9571 WILDFIRE 911 INJURIES
## 7861 THUNDERSTORM WINDS 908 INJURIES
## 301 BLIZZARD 805 INJURIES
## 1881 FOG 734 INJURIES
## 9551 WILD/FOREST FIRE 545 INJURIES
## 1171 DUST STORM 440 INJURIES
## 9781 WINTER WEATHER 398 INJURIES
## 891 DENSE FOG 342 INJURIES
## 8481 TROPICAL STORM 340 INJURIES
## 2781 HEAT WAVE 309 INJURIES
## 3761 HIGH WINDS 302 INJURIES
## 5861 RIP CURRENTS 297 INJURIES
## 6761 STRONG WIND 280 INJURIES
## 2901 HEAVY RAIN 251 INJURIES
## 5851 RIP CURRENT 232 INJURIES
## 1401 EXTREME COLD 231 INJURIES
## 2221 GLAZE 216 INJURIES
## 191 AVALANCHE 170 INJURIES
## 1421 EXTREME HEAT 155 INJURIES
## 3501 HIGH SURF 152 INJURIES
## 9541 WILD FIRES 150 INJURIES
## 4171 ICE 137 INJURIES
## 8771 TSUNAMI 129 INJURIES
## 8731 TSTM WIND/HAIL 95 INJURIES
## 9601 WIND 86 INJURIES
## 9191 URBAN/SML STREAM FLD 79 INJURIES
## 984 WINTRY MIX 77 INJURIES
## 9801 WINTER WEATHER/MIX 72 INJURIES
## 277 Heat Wave 70 INJURIES
## 979 WINTER WEATHER MIX 68 INJURIES
## 4421 LANDSLIDE 52 INJURIES
## 557 RECORD HEAT 50 INJURIES
## 661 COLD 48 INJURIES
## 3421 HEAVY SURF/HIGH SURF 48 INJURIES
## 4021 HURRICANE 46 INJURIES
## 8511 TROPICAL STORM GORDON 43 INJURIES
## 115 DUST DEVIL 42 INJURIES
## 9431 WATERSPOUT/TORNADO 42 INJURIES
## 3391 HEAVY SURF 40 INJURIES
## 6701 STORM SURGE 38 INJURIES
## 656 SNOW/HIGH WINDS 36 INJURIES
## 645 SNOW SQUALL 35 INJURIES
## 4351 ICY ROADS 31 INJURIES
## 6291 SNOW 29 INJURIES
## 9361 WATERSPOUT 29 INJURIES
## 1011 DRY MICROBURST 28 INJURIES
## 821 THUNDERSTORMW 27 INJURIES
## 4891 MARINE THUNDERSTORM WIND 26 INJURIES
## 501 MIXED PRECIP 26 INJURIES
## 29 BLACK ICE 24 INJURIES
## 1411 EXTREME COLD/WIND CHILL 24 INJURIES
## 2011 FREEZING RAIN 23 INJURIES
## 4881 MARINE STRONG WIND 22 INJURIES
## 134 EXCESSIVE RAINFALL 21 INJURIES
## 6801 STRONG WINDS 21 INJURIES
## 3661 HIGH WIND AND SEAS 20 INJURIES
## 8861 UNSEASONABLY WARM 17 INJURIES
## 9761 WINTER STORMS 17 INJURIES
## 838 TORNADO F2 16 INJURIES
## 1771 FLOOD/FLASH FLOOD 15 INJURIES
## 195 FREEZING DRIZZLE 15 INJURIES
## 224 GLAZE/ICE STORM 15 INJURIES
## 2791 HEAT WAVE DROUGHT 15 INJURIES
## 973 WINTER STORM HIGH WINDS 15 INJURIES
## 44 BLOWING SNOW 13 INJURIES
## 791 COLD/WIND CHILL 12 INJURIES
## 753 THUNDERSTORM 12 INJURIES
## 331 HEAVY SNOW/ICE 10 INJURIES
## 617 SMALL HAIL 10 INJURIES
## 754 THUNDERSTORM WINDS 10 INJURIES
## 1641 FLASH FLOODING 8 INJURIES
## 2431 GUSTY WINDS 8 INJURIES
## 3481 HIGH SEAS 8 INJURIES
## 4901 MARINE TSTM WIND 8 INJURIES
## 526 NON-SEVERE WIND DAMAGE 7 INJURIES
## 3951 HIGH WINDS/SNOW 6 INJURIES
## 58 COASTAL FLOODING/EROSION 5 INJURIES
## 1461 EXTREME WINDCHILL 5 INJURIES
## 4871 MARINE MISHAP 5 INJURIES
## 5961 ROUGH SEAS 5 INJURIES
## 6711 STORM SURGE/TIDE 5 INJURIES
## 879 TYPHOON 5 INJURIES
## 95 DROUGHT 4 INJURIES
## 305 HEAVY RAINS 4 INJURIES
## 3491 High Surf 4 INJURIES
## 392 HIGH WINDS/COLD 4 INJURIES
Across the United States, which types of events have the greatest economic consequences?
Calculate property and crop damage by multiplying by respective factors
tPROPDMG<- mapvalues(dat$PROPDMGEXP, c("K","M","","B","m","+","0","5","6","?","4","2","3","h","7","H","-","1","8"),
c(1e3,1e6,1,1e9,1e6,1,1,1e5,1e6,1,1e4,1e2,1e3,1,1e7,1e2,1,10,1e8))
tCROPDMG <- mapvalues(dat$CROPDMGEXP,
c("","M","K","m","B","?","0","k","2"),
c( 1,1e6,1e3,1e6,1e9,1,1,1e3,1e2))
dat$PROPDMGTOTAL<- as.numeric(tPROPDMG)*dat$PROPDMG
dat$CROPDMGTOTAL<- as.numeric(tCROPDMG)*dat$CROPDMG
Calculate total damage
dat$DMGTOTAL<-dat$PROPDMGTOTAL + dat$CROPDMGTOTAL
Group damage by event type and calculate total
propDat<-aggregate(dat$PROPDMGTOTAL, by= list(dat$EVTYPE), FUN=sum)
propDat<-propDat[order(-propDat$x),][1:100,]
cropDat<-aggregate(dat$CROPDMGTOTAL, by= list(dat$EVTYPE), FUN=sum)
cropDat<-cropDat[order(-cropDat$x),][1:100,]
propCropDat<-aggregate(dat$DMGTOTAL, by=list(dat$EVTYPE), FUN=sum)
propCropDat<- propCropDat[order(-propCropDat$x),][1:100,]
Results
#Top 10 Storm Events that Produced The Most Fatalities
ggplot(orderCountDatFat[1:10,], aes(x=Group.1, y=x))+
geom_bar(stat="identity")+
theme(axis.text.x = element_text(angle = 90, hjust = 1))+
xlab("Event Type")+
ylab("Fatalities")+
ggtitle("Top 10 Fatalities by Event Type")

#Top 10 Storm Events that Produced The Most Injuries
ggplot(orderCountDatInj[1:10,], aes(x=Group.1, y=x))+
geom_bar(stat="identity")+
theme(axis.text.x = element_text(angle = 90, hjust = 1))+
xlab("Event Type")+
ylab("Injuries")+
ggtitle("Top 10 Injuries by Event Type")

#Top 10 Storm Events that Produced The Most Property/Crop Damage
ggplot(propCropDat[1:10,], aes(x=Group.1, y=x))+
geom_bar(stat="identity")+
theme(axis.text.x = element_text(angle = 90, hjust = 1))+
xlab("Event Type")+
ylab("Total Damage (Property + Crop)")+
ggtitle("Top Ten Event Types for Total Damage (Property + Crop)")
