从API接收数据后,将HTTR内容(请求)发送到数据帧 [英] R httr content(req) to data frame after receiving data from API
问题描述
我正在尝试通过美国人口普查地理编码器对一组地址进行批量地理编码:http://geocoding.geo.census.gov/geocoder/
我发现了这个问题:
Posting to and Receiving data from API using httr in R
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"
"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"
我已经尝试使用这里提到的jsonlite方法:Successfully coercing paginated JSON object to R dataframe
以及在谷歌上搜索HTtr/内容到数据帧,但没有任何运气。我最接近得到我想要的是使用
cat(content(req, "text"), "
")
,它获得的结果看起来像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返回的CSV包含以下列: RowID,Address,Match,MatchType,MatchedAddress,Lat,Long,Streetside,State,Country,Track,Block
我更喜欢通过R来完成这项工作,因此我的最终结果需要是一个包含这些列的数据框。数据在内容(请求)中,我只是不知道如何将其放入数据框中。
谢谢你的帮助!
推荐答案
使用TextConnection将其设置为一行
df <- read.csv(textConnection(content(req, 'text')))
这篇关于从API接收数据后,将HTTR内容(请求)发送到数据帧的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!