rnoaa показывает, что данные доступны, но не возвращает запрос
Я работаю с пакетом rnoaa(), чтобы получить некоторые исторические данные о погоде, и у меня возникают проблемы с получением данных, которые говорят, что они доступны, но не возвращаются.
Для того, чтобы этот воспроизводимый пример работал, вам сначала понадобится маркер из http://www.ncdc.noaa.gov/cdo-web/token
Настройка:
options(noaakey = "KEY_EMAILED_TO_YOU")
library(rnoaa)
Проверьте, какой тип данных доступен:
ncdc_datatypes(stationid = "GHCND:US009052008", datasetid='GHCND')
Вывод:
$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")
PRCP, составляют 1781 год.  Так Позвольте мне попытаться извлечь данные только за 1900 год, как это должно быть доступно.
Попробуйте извлечь данные из 1900 года:
ncdc(stationid = "GHCND:US009052008", datasetid='GHCND', datatypeid = 'PRCP', startdate = "1900-01-01", enddate = "1900-12-30")
Вывод:
$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
1 ответ:
Один из способов:
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"