RNOAA R包数据访问

时间:2018-03-20 11:48:14

标签: r database data-mining rnoaa

我一直在尝试使用r包35.202418975487014 27.725778915371617 从最接近我的研究地点(几乎是佛罗里达州的每个州或国家公园)的气象站下载气候数据几十年。

我没有找到任何有助于或真正对我有意义的小插曲或教程,特别是考虑到我正在与之合作的公园数量。我想知道这里有人是否有使用这个软件包的经验,并且可以通过我列表中的几个公园展示如何做到这一点的例子?

我也有公园的经度和纬度:

rnoaa

此示例数据的最终目标是在数据中列出的年份中,从距离这些公园(或公园坐标)最近的气象站获得年度温度,湿度和其他环境变量。我知道这些年可能会缺少数据,具体取决于气象站。

1 个答案:

答案 0 :(得分:1)

这应该让你开始(使用你问题中的df):

library(rnooa)

# load station data - takes some minutes

station_data <- ghcnd_stations()

# add id column for each location (necessary for next function)

df$id <- 1:nrow(df)

# retrieve all stations in radius (e.g. 20km) using lapply

stations <- lapply(1:nrow(df),
                   function(i) meteo_nearby_stations(df[i,],lat_colname = 'ParkLatitude',lon_colname = 'ParkLongitude',radius = 20,station_data = station_data)[[1]])

# pull data for nearest stations -  x$id[1] selects ID of closest station

stations_data <- lapply(stations,function(x)  meteo_pull_monitors(x$id[1]))

这将为您提供最近车站的所有变量。当然,您可以在var的{​​{1}}中使用meteo_pull_monitors指定所需的变量。

下一步是检查您想要的变量是否在您想要的时间范围内可用于这些电台。如果没有,你可以使用下一个最接近的那个。

E.g。

距离您的第一个公园最近的车站只有降水,最低和最高温度:

stations_data[[1]]

# # A tibble: 4,077 x 5
# id       date  prcp  tmax  tmin
# <chr>     <date> <dbl> <dbl> <dbl>
# 1 USW00092826 2007-02-01    NA    NA    NA
# 2 USW00092826 2007-02-02    NA    NA    NA
# 3 USW00092826 2007-02-03    NA    NA    NA
# 4 USW00092826 2007-02-04    NA    NA    NA
# 5 USW00092826 2007-02-05    NA    NA    NA
# 6 USW00092826 2007-02-06    NA    NA    NA
# 7 USW00092826 2007-02-07    NA    NA    NA
# 8 USW00092826 2007-02-08    NA    NA    NA
# 9 USW00092826 2007-02-09    NA    NA    NA
#10 USW00092826 2007-02-10    NA    NA    NA
# # ... with 4,067 more rows

您可以看到,您需要处理的测量值缺失。