データを使用して分析できるように、API から取得した JSON を R のデータ フレームに変換しようとしています。
#Install needed packages
require(RJSONIO)
require(httr)
#request a list of companies currently fundraising using httr
r <- GET("https://api.angel.co/1/startups?filter=raising")
#convert to text object using httr
raise <- content(r, as="text")
#convert to list using RJSONIO
fromJSON(raise) -> new
このオブジェクトを取得するとnew
、リストをデータフレームに解析するのに非常に苦労しています。json の構造は次のとおりです。
{
"startups": [
{
"id": 6702,
"name": "AngelList",
"quality": 10,
"...": "...",
"fundraising": {
"round_opened_at": "2013-07-30",
"raising_amount": 1000000,
"pre_money_valuation": 2000000,
"discount": null,
"equity_basis": "equity",
"updated_at": "2013-07-30T08:14:40Z",
"raised_amount": 0.0
}
}
],
"total": 4268 ,
"per_page": 50,
"page": 1,
"last_page": 86
}
new
次のようなコードを使用して、個々の要素を調べてみました。
new$startups[[1]]$fundraising$raised_amount
raised_amount
リストされた最初の要素のをプルします。しかし、これを 4268 のスタートアップのリスト全体に適用する方法がわかりません。特に、ページネーションの処理方法がわかりません。スタートアップの 1 ページ (つまり 50 件) しか取得できないようです。
forループを使用してスタートアップのリストを取得し、各値をデータフレームの行に1つずつ入れてみました。以下の例では、これを 1 つの列についてのみ示していますが、もちろん、for ループを展開するだけですべての列に対して実行できます。ただし、他のページのコンテンツを取得できません。
df1 <- as.data.frame(1:length(new$startups))
df1$raiseamnt <- 0
for (i in 1:length(new$startups)) {
df1$raiseamnt[i] <- new$startups[[i]]$fundraising$raised_amount
}
e: ページネーションについて言及していただきありがとうございます。ドキュメントをより注意深く調べて、異なるページを取得するための API 呼び出しを正しく構成する方法を理解できるかどうかを確認します。それがわかったら、この回答を更新します!