šŸ‘‹ hi, Iā€™m basile

noaastorms R package now supports NOAA IBTrACS v4

Earlier this year, I released a simple R package (available at basilesimon/noaastorms) that downloads, cleans and parses NOAA IBtrack data for you.

As the NOAA updated its datasets, noaastorms is now using these!

How to install


Available functions

getStorms: Fetch NOAA historical best track storms data

> df <- getStorms(c('EP'))

> head(df[1:5])
     Serial_Num Season Num Basin Sub_basin    Name
2 1902276N14266   1902  01    EP        MM UNNAMED
3 1902276N14266   1902  01    EP        MM UNNAMED
4 1902276N14266   1902  01    EP        MM UNNAMED
5 1902276N14266   1902  01    EP        MM UNNAMED
6 1902276N14266   1902  01    EP        MM UNNAMED

The first argument is a vector of basin codes from this list:

NOAA basins map

To get storms that took place in the Atlantic for example, run getStorms(c('NA', 'SA')).

The second (optional) argument is a date range to filter data with. For example:

dateRange <- c(as.Date('2010-01-01'), as.Date('2012-12-31'))
getStorms(c('NA', 'SA'), dateRange = dateRange)

Will query storms that took place in the Atlantic in 2010 and 2012.


# load a map of the world and
# use `clipPolys` to avoid issues
# when zooming in with `coord_map`
wm <- map_data("world")
data.table::setnames(wm, c("X","Y","PID","POS","region","subregion"))
worldmap <- clipPolys(wm,
  xlim=c(20,110),ylim=c(0, 45),

# load storms for the Atlantic ocean
spStorms <- getStorms(c('NA', 'SA'))

  aes(x = Longitude, y = Latitude,
    group = Serial_Num)) + 
  geom_polygon(data = worldmap,
    aes(x = X, y = Y, group = PID), 
    fill = "whitesmoke",
    colour = "gray10",
    size = 0.2) +
  geom_path(alpha = 0.1, size = 0.8,
    color = "red") +
  coord_map(xlim = c(20,110),
    ylim = c(0, 45)) 

Screenshot of storms

Official changelog (retrieved Aug 16, 2019)


This is the first release of IBTrACS version 04. It is updated weekly.
Release date: March 2019

New features (improvements from v03):