从API接收数据后R httr content(req)到数据帧

2024-01-03

我正在尝试通过美国人口普查地理编码器对一组地址进行批量地理编码:http://geocoding.geo.census.gov/geocoder/ http://geocoding.geo.census.gov/geocoder/

我发现了这个问题:

在 R 中使用 httr 向 API 发送和接收数据 https://stackoverflow.com/questions/27048361/posting-to-and-receiving-data-from-api-using-httr-in-r?answertab=votes#tab-top

Hadley 的建议非常适合将我的数据帧发送到 API 并获取地理编码地址。我遇到的问题是如何将返回的数据返回到数据框中。我本来想对他的回复发表评论,但不幸的是,由于这是一个新帐户,我还无法发表评论。

所以我的代码如下:

req <- POST("http://geocoding.geo.census.gov/geocoder/geographies/addressbatch", 
body = list(
      addressFile = upload_file("mydata.csv"),
      benchmark = "Public_AR_Census2010",
      vintage = "Census2010_Census2010"
 ), 
encode = "multipart",
verbose())
stop_for_status(req)
content(req)

当我运行 content(req) 时,我得到的数据如下所示:

"946\",\"123 MY STREET, ANYTOWN, TX,
99999\",\"Match\",\"Non_Exact\",\"123 MY STREET, ANYTOWN, TX,
99999\",\"-75.43486,80.423775\",\"95495654\",\"L\",\"99\",\"999\",\"021999\",\"3
005\"\n\"333\",\"456 MY STREET, ANYTOWN, TX, 
99999\",\"Match\",\"Exact\",\"456 MY STREET, ANYTOWN, TX, 
99999\",\"-75.38545,80.383747\",\"6546542\",\"R\",\"99\",\"999\",\"021999\",\"3002\"\n\

我尝试使用这里提到的 jsonlite 方法:成功将分页 JSON 对象强制转换为 R 数据帧 https://stackoverflow.com/questions/29997325/successfully-coercing-paginated-json-object-to-r-dataframe

以及用谷歌搜索 httr/content 到数据框,但没有任何运气。我最接近得到我想要的东西就是使用

cat(content(req, "text"), "\n")它得到的结果看起来像 CSV,我可以将其用作数据框:

"476","123 MY STREET, ANYTOWN, TX, 99999","Match","Exact",
"123 MY STREET, ANYTOWN, TX,
99999","-75.438644,80.426025","654651321","L","99","999","0219999","3013"

但我也无法找到任何帮助将 cat() 的结果放入数据框中,因为我相信该函数只打印结果。

当我使用浏览器并上传 csv 时,我得到一个包含以下列的 csv: RowID、地址、匹配、匹配类型、匹配地址、纬度、经度、街边、州、县、地区、街区

我更愿意通过 R 来完成此操作,因此我的最终结果需要是包含这些列的数据框。数据存在于内容(req)中,我只是还没有弄清楚如何在数据框中获取它。

谢谢您的帮助!


使用 textConnection 使其成为一个衬垫

df <- read.csv(textConnection(content(req, 'text')))
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

从API接收数据后R httr content(req)到数据帧 的相关文章

随机推荐