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"
Другие вопросы по тегам