2017-08-15 35 views
1

我有一個數據框,其地理位置接近10k,想要獲得儘可能多的座標,但是我的代碼並沒有像我期望的那樣返回結果。我會解釋。 我有這樣的:R:地理編碼返回的結果比我的查詢要多

# Getting records for Promenaea genus for an exemple 
library(dismo) 
promena<-gbif("Promenaea") 

#Once I get all records I keep only those that don't have coordinates 
promena<-promena[(is.na(promena$lon)),] 

#And then, try to get coordinates for them 
b <- try(geocode(promena$cloc)) 

我的計劃是cbind Promenaea種我的數據幀與地理編碼的結果,然後直接刪除這些行地理編碼找不到座標(即woud有NA)。但我的數據框有259行,地理編碼返回318行作爲結果...所以有些東西在那裏不匹配。

我明白任何提示

+0

好吧這是非常重要的...我想我衝out ...我一直在尋找並找到一個解決方案...... 我使用'ggmap :: geocode'輸出=「more」作爲參數,而不是之前使用的'dismo :: geocode'。我是新來的stackoverflow ...什麼是好的實踐?我刪除這個愚蠢的問題,或者如果其他人有同樣的問題,請留下來。 – Thai

+0

我認爲你應該留下這個問題,因爲它在某些時候可能對其他人有用。你甚至可能想寫出解決方案作爲回答你自己的問題的答案 – SymbolixAU

回答

1

所以我一直在研究和發現了一些選項:

的dismo ::地理編碼功能有一個名爲oneRecord用於此目的的說法:

b <- try(geocode(promena$cloc, oneRecord=TRUE)) 

但是:

oneRecord 邏輯。如果爲TRUE,則返回x中每個項目的單個記錄。如果API返回多個記錄,則通過平均座標並取所有邊界框的聯合來計算此記錄的值(說明文檔)

由於我更喜歡​​使用真實度量而不是平均值,我一直在尋找,發現ggmap也有一個地理編碼功能:

#Nem attempt of getting coordinates. 
b <- try(ggmap::geocode(promena$cloc)) 

但是我只拿到了座標,我想有關聯的座標位置,所以我可以檢查,如果地理編碼返回了良好的效果,所以我用這個說法:

b <- try(ggmap::geocode(promena$cloc, output="more")) 

從兩種方法。最後,我比較的結果,他們是幾乎相同的,所以我想檢查記錄,因爲功能確實可以返回平均