使用rnoaa包

时间:2017-01-30 17:58:46

标签: r memory noaa ropensci fuzzyjoin

使用rnoaa包将美国电台ID添加到天气事件的df中。 str() df。

的下方是rain

google drive link to csv file of subset

'data.frame':   4395 obs. of  63 variables:
 $ YEAR               : int  2009 2009 2012 2013 2013 2015 2007 2007 2007  
 $ msa_code           : int  29180 29180 29180 12260 12260 12260 23540 23540  
 $ zip                : int  22001 22001 22001 45003 45003 45003 12001 12001 
 $ state              : chr  "LA" "LA" "LA" "SC" ...
 $ gdp                : int  23495 23495 27346 20856 20856 22313 10119 10119 
 $ EVENT_TYPE         : chr  "Heavy Rain" "Heavy Rain" "Heavy Rain" "Heavy 
 $ WFO                : chr  "LCH" "LCH" "LCH" "CAE" ...
 $ latitude           : num  30.4 30.2 30.2 33.4 33.5 ...
 $ longitude          : num  -92.4 -92.4 -92.2 -81.6 -81.9 ...
 $ SUM_DAMAGES        : num  0 0 0 0 0 0 0 0 0 0 ...

省略一堆与此无关的变量,这里是rain df的片段

X CZ_NAME YEAR full state name msa_code msa_name.x    zip
49  ACADIA 2009 LOUISIANA      29180    Lafayette, LA 22001
60  ACADIA 2009 LOUISIANA      29180    Lafayette, LA 22001
91  ACADIA 2012 LOUISIANA      29180    Lafayette, LA 22001
761 AIKEN  2013 SOUTH CAROLINA 12260    Augusta-Richmond County, GA-SC 45003
770 AIKEN  2013 SOUTH CAROLINA 12260    Augusta-Richmond County, GA-SC 45003
809 AIKEN  2015 SOUTH CAROLINA 12260    Augusta-Richmond County, GA-SC 45003
latitude longitude
-92.4200 30.4300 
-92.3700 30.2200 
-92.2484 30.2354 
-81.6400 33.4361 
-81.8800 33.5400
-81.7000 33.5300

以下是ghcnd_stations() tibble的片段,rnoaa文档建议分配,因此每次都不必调用它。

# A tibble: 6 × 11
       id latitude longitude elevation state                          name
    <chr>    <dbl>     <dbl>     <dbl> <chr>                         <chr>
1 US009052008  43.7333  -96.6333       482    SD SIOUX FALLS (ENVIRON. CANADA)
2 US009052008  43.7333  -96.6333       482    SD SIOUX FALLS (ENVIRON. CANADA)
3 US009052008  43.7333  -96.6333       482    SD SIOUX FALLS (ENVIRON. CANADA)
4 US009052008  43.7333  -96.6333       482    SD SIOUX FALLS (ENVIRON. CANADA)
5 US10adam001  40.5680  -98.5069       598    NE                 JUNIATA 1.5 S
6 US10adam001  40.5680  -98.5069       598    NE                 JUNIATA 1.5 S
# ... with 5 more variables: gsn_flag <chr>, wmo_id <chr>, element <chr>,
#   first_year <int>, last_year <int> 

到目前为止,我已经能够使用ghcnd_stations()命令调出电台列表,然后,在删除非CONUS电台后,取出这些电台的纬度/经度坐标,使用{ {1}}比较两个列表并合并到最近的站点。

fuzzyjoin::geo_inner_join

我获取了一部分数据,并尝试运行此功能,但是当我尝试在整个数据集上运行该代码时,我遇到了subset <- head(rain) subset_join <- geo_inner_join(subset, stations, by = c("latitude", "longitude"), max_dist = 5) 错误:

memory.size

我已经尝试了Error: cannot allocate vector of size 2.9 Gb In addition: Warning messages: 1: In fuzzy_join(x, y, multi_by = by, multi_match_fun = match_fun, : Reached total allocation of 8017Mb: see help(memory.size) ,并尝试阅读增加内存大小,但我仍然收到错误。 memory.size = 9000返回此信息:

memory.size(max = TRUE)

是否有更有效的方法来执行此操作,或者我是否必须切换我的df,运行代码,然后将> memory.size(max = TRUE) [1] 7013 重新组合在一起?

仅供上下文使用,rbind

sys.info()

第一个问题!如果我没有包含任何相关内容,请与我们联系。 谢谢!

0 个答案:

没有答案