library(ggplot2)
## Warning: package 'ggplot2' was built under R version 3.6.1
library(reshape2)
## Warning: package 'reshape2' was built under R version 3.6.1
library(stringdist)
## Warning: package 'stringdist' was built under R version 3.6.1
link<-"https://d396qusza40orc.cloudfront.net/repdata%2Fdata%2FStormData.csv.bz2"

if (!file.exists("Storm_data.csv.bz2")) {
  download.file(link, destfile = "./Storm_data.csv.bz2", method = "curl")
}

Raw_data<- read.csv("Storm_data.csv.bz2")

Storm_data <- subset(Raw_data[,c("BGN_DATE", "EVTYPE","FATALITIES","INJURIES", 
                                 "PROPDMG", "PROPDMGEXP", "CROPDMG", "CROPDMGEXP")], 
                     Raw_data$FATALITIES > 0 | Raw_data$INJURIES > 0)

Storm_data$BGN_DATE <- as.Date(Storm_data$BGN_DATE, format = "%m/%d/%Y")

Storm_data <- subset(Storm_data, Storm_data$BGN_DATE > "1995-12-31")

Events <- c("Astronomical Low Tide",
            "Avalanche,Blizzard" , "Coastal Flood", "Cold/Wind Chill", "Debris Flow",
            "Dense Fog", "Dense Smoke", "Drought", "Dust Devil", "Dust Storm", 
            "Excessive Heat", "Extreme Cold/Wind Chill", "Flash Flood", "Flood",
            "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 Wind", "Marine Strong Wind", "Marine Thunderstorm Wind", 
            "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")

Events<-toupper(Events)


Storm_data$EVTYPE_V2<-amatch(Storm_data$EVTYPE, Events, maxDist=Inf)
Storm_data$EVTYPE_V2<-Events[Storm_data$EVTYPE_V2]

Storm_data$PROPDMGEXP <- as.character(Storm_data$PROPDMGEXP)
Storm_data$CROPDMGEXP <- as.character(Storm_data$CROPDMGEXP)

Storm_data[(Storm_data$PROPDMGEXP == "K"),]$PROPDMGEXP <- 1000
Storm_data[(Storm_data$PROPDMGEXP == ""),]$PROPDMGEXP <- 1
Storm_data[(Storm_data$PROPDMGEXP == "M"),]$PROPDMGEXP <- 1000000
Storm_data[(Storm_data$PROPDMGEXP == "B"),]$PROPDMGEXP <- 1000000000
Storm_data[(Storm_data$CROPDMGEXP == "K"),]$CROPDMGEXP <- 1000
Storm_data[(Storm_data$CROPDMGEXP == "M"),]$CROPDMGEXP <- 1000000
Storm_data[(Storm_data$CROPDMGEXP == "B"),]$CROPDMGEXP <- 1000000000
Storm_data[(Storm_data$CROPDMGEXP == ""),]$CROPDMGEXP <- 1



fatalities <- aggregate(Storm_data$FATALITIES, 
                        list(Storm_data$EVTYPE_V2), sum)

injuries <- aggregate(Storm_data$INJURIES, 
                      list(Storm_data$EVTYPE_V2), sum)


people_loss <- merge(fatalities, injuries, by = "Group.1", all = TRUE)
colnames(people_loss) <- c("Event", "Fatalities", "Injuries")

people_loss$Total <- people_loss$Fatalities + people_loss$Injuries
people_loss <- people_loss[order(-people_loss$Total),]
people_loss <- melt(head(people_loss, n = 10))
## Using Event as id variables
people_loss <- subset(people_loss, people_loss$variable != "Total")
people_loss$Event <- factor(people_loss$Event, levels = unique(people_loss$Event), ordered = FALSE)

ggplot(people_loss, 
       aes(x = Event, y = value, fill = variable)) + 
  geom_bar(stat = "identity") + 
  theme(axis.text.x = element_text(angle = 90)) +
  ggtitle("Events Most Harmful For Population") + 
  theme(axis.text.x=element_text(angle=45, hjust = 1))