首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >基于Lat/Lon - RNOAA软件包的R中的天气数据提取功能

基于Lat/Lon - RNOAA软件包的R中的天气数据提取功能
EN

Stack Overflow用户
提问于 2018-09-13 18:38:13
回答 1查看 259关注 0票数 1

我正在建立一个基于纬度和经度的R天气观测类型列表,类似于气象站。

代码语言:javascript
复制
## List of airports you want to include in your weather extract

airport_list <- c("KABE" , "KBWI", "KRAL")

## Drilldown of your airport locations ( I have a separate table that pulls in this info

airport_list_dd <- airport_locs[airport_locs$icao %in% airport_list,]

## Mutate the data frame to make lat/lon compatible for searching the    NOAA GHCND 

airport_list_similar <- airport_list_dd %>%
  mutate(lon_similar = str_extract(longitude, "([-0-9]+)\\.."),
         lat_similar = str_extract(latitude, "([-0-9]+)\\.."),
         lon_exact = str_extract(longitude, "([-0-9]+)\\....."),
         lat_exact = str_extract(latitude, "([-0-9]+)\\....."))

## Define your date range

 date_min <- Sys.Date() - (10 * 365)
 date_max <- Sys.Date()
 filter_year <- year(Sys.Date()) - 1

# THIS IS WHERE I AM HAVING THE ISSUE
 ## Build your weather extracts
 ghcnd_near_airport <- list()
 build_lon_table <- function(x){
  i <- 1
  for (i in 1:length(x)) {
    lon_similar <- x$lon_similar[i]
    lat_similar <- x$lat_similar[i]
    ghcnd_near_airport <- c(ghcnd_stations %>%
                                filter(str_detect(longitude, lon_similar), str_detect(latitude, lat_similar)), list(i))
  }
  return(ghcnd_near_airport)
}

但这将返回一个空列表,计数为11,这意味着它正在以适当的时间遍历函数,但不会返回列表中的任何数据。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2018-09-13 20:11:33

找到了答案:

代码语言:javascript
复制
build_lon_table <- function(x){
  i <- 1
  ghcnd_near_airport_app <- data.frame(id = character(), latitude = numeric(), longitude = numeric(), elevation = numeric(), state = character(), name = character(), gsn_flag = character(), wmo_id = character(), element = character(),first_year = integer(), last_year = integer(), stringsAsFactors = FALSE)
  for (i in 1:nrow(x)) {
    ghcnd_near_airport_filter <- ghcnd_stations %>%
          filter(str_detect(longitude, x$lon_similar[i]), str_detect(latitude, x$lat_similar[i]), last_year >= filter_year, element == "TMIN"| element == "WT01") %>%
          mutate(lon_diff = abs(longitude - as.numeric(airport_list_similar$lon_exact[i])), lat_diff = abs(latitude - as.numeric(airport_list_similar$lat_exact[i])),    total_diff = lon_diff + lat_diff) %>%
          arrange(total_diff)

    ghcnd_near_airport_filter <- head(ghcnd_near_airport_filter, 2)
    ghcnd_near_airport_app <- rbind(ghcnd_near_airport_app, ghcnd_near_airport_filter)
    i <- i + 1
  }
  return(ghcnd_near_airport_app)
}

test <- build_lon_table(airport_list_similar)
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/52319903

复制
相关文章

相似问题

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