【问题标题】:Retrieving climate data on "rnoaa" package in R在 R 中检索“rnoaa”包的气候数据
【发布时间】:2020-10-15 06:41:07
【问题描述】:

我正在尝试在特定 date 上检索特定 station_ID 的气候数据。我的数据集包含这两个元素。

for(i in data$date){lapply(data$station_id[i],
                           ghcnd_search,
                           var = "PRCP", 
                           date_min = data$date[i],
                           date_max = data$date[i])}

我试过这个,但无济于事。如果有人可以帮助我,我将不胜感激。

【问题讨论】:

  • 请展示一个可重现的小例子。我假设您只需要 for 循环或 lapply
  • 也许这对你有用。 out <- vector('list', nrow(data)); for(i in seq_len(nrow(data))) out[[i]] <- ghcnd_search(stationid = data$station_id[i], var = "PRCP", date_min = data$date[i], date_max = data$date[i])

标签: r rnoaa


【解决方案1】:

我们可以遍历行序列,然后使用该索引对“date”和“station_id”的值进行子集化

library(rnoaa)
out <- vector('list', nrow(data))
for(i in seq_len(nrow(data))){
 out[[i]] <- ghcnd_search(stationid  = data$station_id[i], 
   var = "PRCP", date_min = data$date[i], date_max = data$date[i])
}

-输出

out
#[[1]]
#[[1]]$prcp
# A tibble: 1 x 6
#  id           prcp date       mflag qflag sflag
#  <chr>       <int> <date>     <chr> <chr> <chr>
#1 AGE00147704    90 1920-01-01 " "   " "   E    


#[[2]]
#[[2]]$prcp
# A tibble: 1 x 6
#  id           prcp date       mflag qflag sflag
#  <chr>       <int> <date>     <chr> <chr> <chr>
#1 AGE00147704     0 1915-01-01 " "   " "   E    

或使用Map

out1 <- Map(function(x, y) ghcnd_search(stationid = x, var = "PRCP",
         date_min = y, date_max= y), data$station_id, data$date)

数据

data <- data.frame(station_id = c("AGE00147704", "AGE00147704"),
    date = c("1920-01-01", "1915-01-01"), stringsAsFactors = FALSE)

【讨论】:

  • 感谢您的快速回复。我试过了,得到了这个; curl::curl_fetch_memory(x$url$url, handle = x$url$handle) 中的错误:已达到超时:[ftp.ncdc.noaa.gov] 服务器响应超时
  • @user13794388 你可能需要一些Sys.sleep 来避免错误。无论如何,我回答了提出的问题。谢谢
猜你喜欢
  • 2018-08-29
  • 2019-02-18
  • 2020-08-16
  • 2013-12-29
  • 2015-02-10
  • 2017-04-20
  • 2016-08-09
  • 2017-10-18
  • 2019-07-16
相关资源
最近更新 更多