I'm working with the rnoaa()
package to get some historical weather data and am running into problems with retrieving data that says is available, but will not return.
In order for this reproducible example to work you will first need a token from http://www.ncdc.noaa.gov/cdo-web/token
Setup:
options(noaakey = "KEY_EMAILED_TO_YOU")
library(rnoaa)
Check what type of data is available:
ncdc_datatypes(stationid = "GHCND:US009052008", datasetid='GHCND')
Output:
$meta
offset count limit
1 1 4 25
$data
Source: local data frame [4 x 5]
mindate maxdate name datacoverage id
(chr) (chr) (chr) (int) (chr)
1 1781-01-01 2015-10-30 Precipitation (tenths of mm) 1 PRCP
2 1857-01-18 2015-10-29 Snow depth (mm) 1 SNWD
3 1763-01-01 2015-10-30 Maximum temperature (tenths of degrees C) 1 TMAX
4 1763-01-01 2015-10-30 Minimum temperature (tenths of degrees C) 1 TMIN
attr(,"class")
[1] "ncdc_datatypes"
ncdc(stationid = "GHCND:US009052008", datasetid='GHCND', datatypeid = 'PRCP', startdate = "1900-01-01", enddate = "1900-12-30")
Notice that the minimum data available for PRCP
is 1781. So Let me try and pull data from just the year 1900 as it should be available.
Try and pull data from 1900:
ncdc(stationid = "GHCND:US009052008", datasetid='GHCND', datatypeid = 'PRCP', startdate = "1900-01-01", enddate = "1900-12-30")
Output:
$meta
$meta$totalCount
NULL
$meta$pageCount
NULL
$meta$offset
NULL
$data
Source: local data frame [0 x 0]
attr(,"class")
[1] "ncdc_data"
Warning message:
In check_response(temp) : Sorry, no data found
One way:
sta <- "US009052008"
input <- paste0("ftp://ftp.ncdc.noaa.gov/pub/data/ghcn/daily/all/",sta,".dly")
output <- read.fwf(input, n = -1,
widths = c(11,4,2,4),
col.names = c("ID", "YEAR", "MONTH", "ELEMENT"))
out <- split(output, output$ELEMENT)
foo <- function(x){
y1 <- head(x[,c("YEAR", "MONTH")], 1)
y2 <- tail(x[,c("YEAR", "MONTH")], 1)
paste(month.abb[y1$MONTH], y1$YEAR, "-", month.abb[y2$MONTH], y2$YEAR)
}
do.call(rbind, lapply(out, foo))
# [,1]
# PRCP "Oct 2008 - Oct 2015"
# SNWD "Dec 2009 - Oct 2015"
# TMAX "Oct 2008 - Oct 2015"
# TMIN "Oct 2008 - Oct 2015"