R 下载NOAA数据

R 下载NOAA数据,r,noaa,ropensci,rnoaa,R,Noaa,Ropensci,Rnoaa,我试图使用rnoaa软件包下载NOAA数据,但遇到了一些麻烦 我从数据帧中提取了一个向量,它看起来像这样: df <- dataframe$ghcnd 实际上,我有大约22000个气象站。这只是显示前50个 rnoaa代码 但这只是生成一行数据帧,这一行是第125个气象站 如果有人能就下一步的尝试给出建议,那就太好了:) 另外,交叉链接:在循环尝试中,weather2在循环的每次迭代中都会被覆盖 由于请求数和返回长度未知,解决此问题的一种方法是将对ncdc的调用封装在lappy语句中,并

我试图使用rnoaa软件包下载NOAA数据,但遇到了一些麻烦

我从数据帧中提取了一个向量,它看起来像这样:

df <- dataframe$ghcnd
实际上,我有大约22000个气象站。这只是显示前50个

rnoaa代码 但这只是生成一行数据帧,这一行是第125个气象站

如果有人能就下一步的尝试给出建议,那就太好了:)


另外,交叉链接:

在循环尝试中,weather2在循环的每次迭代中都会被覆盖

由于请求数和返回长度未知,解决此问题的一种方法是将对
ncdc
的调用封装在lappy语句中,并将每个响应保存在列表中。然后在lappy语句的末尾,将所有数据合并到一个大数据帧中

library(rnoaa)
library(dplyr)

stationlist <-ghcnd_stations() %>% filter(state == "DE")
df <- paste0("GHCND:", stationlist$id[1:10]) 

#call request data multiple time and store individual results in a list 
 output<-lapply(df, function(station){
    weather <- ncdc(datasetid = 'GHCND', stationid = station, var = 'PRCP', startdate = "2020-05-30",
                    enddate = "2020-05-30", add_units = TRUE)
    #weather$data
    #to include the meta data
    data.frame(t(unlist(weather$meta)), weather$data)
 })
 
 #merge into 1 data frame
 answer <-bind_rows(output)
库(rnoaa)
图书馆(dplyr)
stationlist%筛选器(状态=“DE”)

df在@Dave2e和上面ropensci链接上的一个bud的帮助下,找到了答案

df <- cleaned_emshr$ghcnd  ## Grabbing necessary column

z <- split(df, ceiling(seq_along(df)/100))
out <- list()
for (i in seq_along(z)) {
  out[[i]] <- ncdc(datasetid = 'GHCND', stationid = z[[i]], var = 'PRCP', 
                   startdate = "2020-05-30", enddate = "2020-05-30", 
                   add_units = TRUE, limit = 100)
}

weather <- bind_rows(lapply(out, "[[", "data"))

df好的,我相信我已经成功了<代码>z阅读我的最后一条评论,可能还不完全清楚。基本上,我有一个219个元素的列表。每个元素是一个包含两个元素的列表。对于列表1,我有out[[1]]$meta和out[[1]]$data。我想合并out[[1]]$data,out[[2]]$data…out[[219]]$dataTobin的行,我对上面的代码进行了编辑,将元数据包括在数据框中。当您的方法工作时,它需要2个循环(for和lappy)。最好的做法是让出局名单在第一次通过时正确无误。
df1 <- df[1:125] ## Splitting dataframe. Too big otherwise

for (i in 1:length(df1)){
  weather2<-ncdc(datasetid = 'GHCND', stationid=df1[i],var='PRCP',startdate ='2020-06-30',enddate='2020-06-30',
          add_units = TRUE)
  
}
library(rnoaa)
library(dplyr)

stationlist <-ghcnd_stations() %>% filter(state == "DE")
df <- paste0("GHCND:", stationlist$id[1:10]) 

#call request data multiple time and store individual results in a list 
 output<-lapply(df, function(station){
    weather <- ncdc(datasetid = 'GHCND', stationid = station, var = 'PRCP', startdate = "2020-05-30",
                    enddate = "2020-05-30", add_units = TRUE)
    #weather$data
    #to include the meta data
    data.frame(t(unlist(weather$meta)), weather$data)
 })
 
 #merge into 1 data frame
 answer <-bind_rows(output)
df <- cleaned_emshr$ghcnd  ## Grabbing necessary column

z <- split(df, ceiling(seq_along(df)/100))
out <- list()
for (i in seq_along(z)) {
  out[[i]] <- ncdc(datasetid = 'GHCND', stationid = z[[i]], var = 'PRCP', 
                   startdate = "2020-05-30", enddate = "2020-05-30", 
                   add_units = TRUE, limit = 100)
}

weather <- bind_rows(lapply(out, "[[", "data"))