首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >显示数据的rnoaa是可用的,但不返回请求。

显示数据的rnoaa是可用的,但不返回请求。
EN

Stack Overflow用户
提问于 2015-11-03 23:09:59
回答 1查看 310关注 0票数 2

我正在使用rnoaa()包来获取一些历史天气数据,并且在检索数据时遇到了问题,这些数据说是可用的,但不会返回。

为了使这个可重复的示例工作,您首先需要一个来自http://www.ncdc.noaa.gov/cdo-web/token的令牌

设置:

代码语言:javascript
复制
options(noaakey = "KEY_EMAILED_TO_YOU")
library(rnoaa)

检查可用的数据类型:

代码语言:javascript
复制
ncdc_datatypes(stationid = "GHCND:US009052008", datasetid='GHCND')

输出:

代码语言:javascript
复制
$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年的数据:

代码语言:javascript
复制
ncdc(stationid = "GHCND:US009052008", datasetid='GHCND', datatypeid = 'PRCP', startdate = "1900-01-01", enddate = "1900-12-30")

输出:

代码语言:javascript
复制
$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
EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2015-11-04 03:49:26

单程:

代码语言:javascript
复制
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"
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/33510828

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档