We will use NOAA storm data to (1) make a summary plot of US storms since 1950, (2) quantify how many storms have hit each state, and (3) create a table of the 5 states that have experienced the most storms.
library(sf)
library(tidyverse)
library(ggmap)
library(rnoaa)
library(spData)
data(world)
data(us_states)
storms_sf <- read_sf('08b_data/Basin.NA.ibtracs_all_points.v03r10.shp',
quiet = T, stringsAsFactors = FALSE)
head(storms_sf)
storms_sf1 = storms_sf %>%
filter(Season >= 1950) %>%
mutate_if(is.numeric, function(x) ifelse(x==-999.0,NA,x)) %>%
mutate(Decade = floor(Season/10)*10)
region = st_bbox(storms_sf1)
ggplot() +
geom_sf(data = world, inherit.aes = F,size=.1,fill="grey",colour="black") +
facet_wrap(~Decade) +
stat_bin2d(data=storms_sf1, aes(y=st_coordinates(storms_sf1)[,2],x=st_coordinates(storms_sf1)[,1]),bins=100) +
scale_fill_distiller(palette="YlOrRd",trans="log", direction=1, breaks = c(1,10,100,1000)) +
coord_sf(ylim=region[c(2,4)],xlim=region[c(1,3)]) +
labs(x="",y="")
states = st_transform(us_states, crs = st_crs(storms_sf1))
storm_states = st_join(storms_sf1, states, join = st_intersects,left = F) %>%
group_by(NAME) %>%
mutate(n=length(unique(Name))) %>%
slice(1) %>%
select(NAME, n) %>%
arrange(desc(n))
top5 = storm_states[1:5,] %>% rename(State = NAME, Storms = n) %>% st_set_geometry(NULL)
knitr::kable(top5)
| State | Storms |
|---|---|
| Florida | 77 |
| North Carolina | 51 |
| Georgia | 49 |
| Texas | 48 |
| South Carolina | 40 |
By plotting the US storms since 1950, we don’t see a clear increase in the intensity of storm activity. However, the 2000s did have a clear increase in storm activity which then decreased in the 2010s. We found the state with the highest storm activity to be Florida, followed by North Carolina, which makes sense since these states are in the southeastern region of the US.