2015-11-03 4 views
2

Я работаю с пакетом 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 года, поскольку он должен быть доступен.

Try и извлекать данные из 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 
+0

Согласно [на этой странице] (HTTP: //www1.ncdc .noaa.gov/pub/data/globaldatabank/month/stage2/day2month/ghcnd/INVENTORY_GHCND_monthly_stage2), данные для Sioux Falls (ENVIRON._CANADA) доступны за период 2008-2015. –

+0

@Pascal благодарит за ваш ответ, но я ищу способ проверить доступные годы в R, так как у меня есть много станций для проверки. Есть идеи ? – Vedda

+0

В моем вопросе я сказал, что у меня возникают проблемы с данными, которые, как говорят, доступны, но когда я que, база данных, о которой говорит, недоступна. Запросив тип доступных данных, я прошу проверить доступные годы. Извините, если это не ясно. – Vedda

ответ

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" 
+0

Спасибо за это. Мальчик, я чувствую себя идиотом, поскольку я не знал, что делать с файлами * .dly, и 'read.fwf' отлично работает таким образом. Вы только убили двух зайцев одним выстрелом, так что спасибо! Можете ли вы объяснить, как вы знали, что делать с файлами * .dly и устанавливаете 'widths'? – Vedda

+0

Я получил всю информацию в файле [README] (http://www1.ncdc.noaa.gov/pub/data/ghcn/daily/readme.txt), раздел ** III. ФОРМАТ ФАЙЛОВ ДАННЫХ (ФАЙЛЫ «.dly») **. Вы можете получить длину, преобразуя количество столбцов. Затем для ID столбцы 1-11, поэтому длина равна 11. Для YEAR столбцы составляют 12-15, поэтому длина равна 4. И так далее. –

+0

Я никогда не сталкивался с форматами фиксированной ширины. У меня есть чтение. Благодаря! – Vedda