目标:使用R,通过open.mapquestapi获取地址向量的纬度和经度数据
出发点:由于geocode从ggmap一天开始限制为2500个查询,我需要找到一种不同的方式(我的data.frame由9M条目组成).数据科学工具包不是一种选择,因为我的大多数地址都在英国/美国之外.我在http://rpubs.com/jvoorheis/Micro_Group_Rpres上使用open.mapquestapi 找到了这个优秀的片段.
geocode_attempt <- function(address) {
URL2 = paste("http://open.mapquestapi.com/geocoding/v1/address?key=", "Fmjtd%7Cluub2huanl%2C20%3Do5-9uzwdz",
"&location=", address, "&outFormat='json'", "boundingBox=24,-85,50,-125",
sep = "")
# print(URL2)
URL2 <- gsub(" ", "+", URL2)
x = getURL(URL2)
x1 <- fromJSON(x)
if (length(x1$results[[1]]$locations) == 0) {
return(NA)
} else {
return(c(x1$results[[1]]$locations[[1]]$displayLatLng$lat, x1$results[[1]]$locations[[1]]$displayLatLng$lng))
}
}
geocode_attempt("1241 Kincaid St, Eugene,OR")
Run Code Online (Sandbox Code Playgroud)
我们需要这些库:
library(RCurl)
library(rjson)
library(dplyr)
Run Code Online (Sandbox Code Playgroud)
让我们创建一个包含5个地址的模拟data.frame.
id <- c(seq(1:5))
street <- c("Alexanderplatz 10", "Friedrichstr 102", "Hauptstr 42", "Bruesseler Platz 2", "Aachener Str 324")
postcode …Run Code Online (Sandbox Code Playgroud) 我有一个非常简单的数据框架:
X Y
---
A 1
A 2
B 3
C 1
C 3
Run Code Online (Sandbox Code Playgroud)
我的最终结果应该是这样的列表:
$`A`
[1] 1 2
$`B`
[1] 3
$`C`
[1] 1 3
Run Code Online (Sandbox Code Playgroud)
对于此操作,我在R中使用split()函数:
k <- split(Y, X)
Run Code Online (Sandbox Code Playgroud)
这工作得很好.但是,如果我想在包含2200万行的数据帧上应用此代码,包括1000万个X组和387000个Y值,那么它真的很耗时.我尝试使用RRO 8.0开放版本来支持MKL.但是,仍然只使用一个内核.CPU有64 GB的RAM,所以不应该是一个问题.
有什么想法可以更聪明地计算出来吗?
我正在尝试使用直接的方法将github中的recommenderlabrats软件包安装到我的SUSE Linux R-Server:
devtools::install_github("sanealytics/recommenderlabrats")
Run Code Online (Sandbox Code Playgroud)
但是我收到一条错误消息,我无法理解.
Error in dyn.load(file, DLLpath = DLLpath, ...) :
unable to load shared object '/home/ruser/R/x86_64-unknown-linux-gnu-library/3.2/recommenderlabrats/libs/recommenderlabrats.so':
/home/ruser/R/x86_64-unknown-linux-gnu-library/3.2/recommenderlabrats/libs/recommenderlabrats.so: undefined symbol: dgels_
Error: loading failed
Execution halted
ERROR: loading failed
Run Code Online (Sandbox Code Playgroud)
我猜它归结为
undefined symbol: dgels_
Run Code Online (Sandbox Code Playgroud)
经过一些stackoverflow-和google-search之后,我认为它与Rcpp有关.我安装了0.12.0版本.我试图联系作者,但没有收到任何反馈.我在我的本地Windows机器上遇到类似的错误.
任何帮助表示赞赏.
我正在使用Rselenium和rvest来搜索一些网站.因此,我循环浏览下拉菜单中的项目以更改javascript表.下拉菜单中的表名应成为已删除表中的标识符列.我设法凑表,但刮只是一个选择的菜单项时,我坚持.以下是html代码的一些行:
<select>
<option value="5823">2010/2011</option>
<option value="7094">2011/2012</option>
<option value="9024">2012/2013</option>
<option value="11976">2013/2014</option>
<option value="15388">2014/2015</option>
<option value="18336" selected="selected">2015/2016</option>
</select>
Run Code Online (Sandbox Code Playgroud)
如何获取所选列的html_text?css选择器:选中不起作用.我试过了:
html_nodes("option") %>% html_attrs()
Run Code Online (Sandbox Code Playgroud)
哪个正确地给了我:
[[1]]
value
"5823"
[[2]]
value
"7094"
[[3]]
value
"9024"
[[4]]
value
"11976"
[[5]]
value
"15388"
[[6]]
selected value
"selected" "18336"
Run Code Online (Sandbox Code Playgroud)
和
read_html(wData) %>% html_nodes("option") %>% html_text()
[1] "2010/2011" "2011/2012" "2012/2013" "2013/2014" "2014/2015" "2015/2016"
Run Code Online (Sandbox Code Playgroud)
但我不知道如何将两者结合在一起.我只得到:
[1] "2015/2016"
Run Code Online (Sandbox Code Playgroud)
由于我正在循环选择,我需要一个通用的解决方案.谢谢.
r ×4
css ×1
geocoding ×1
google-maps ×1
lapack ×1
rro ×1
rvest ×1
split ×1
statistics ×1
web-scraping ×1