gpt4 book ai didi

r - 已成功将分页的JSON对象强制转换为R数据框

转载 作者:行者123 更新时间:2023-12-03 16:04:09 25 4
gpt4 key购买 nike

我试图将从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具有 this structure:
{
"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个创业公司的整个列表。特别是,我不知道如何处理分页。我似乎最多只能看到一页创业公司(即其中50家)。

我尝试使用for循环获取启动列表,然后将每个值一个一个地放入数据帧的一行中。下面的示例仅针对一列显示了此内容,但是我当然可以通过扩展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调用以获取不同的页面。如果/当我确定时,我将更新此答案!

最佳答案

您可能会发现jsonlite包很有用。以下是一个简单的示例。

library(jsonlite)
library(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")
#parse JSON
new <- fromJSON(raise)

head(new$startups$id)
[1] 229734 296470 237516 305916 184460 147385

但是请注意,这个包或问题包可能有助于解析JSON字符串,应该适本地创建单个结构,以便可以毫无问题地添加字符串的每个元素,这取决于开发人员。

对于分页,该API似乎是REST API,因此通常在URL中添加过滤条件(例如 https://api.angel.co/1/startups?filter=raising&variable=value)。我想它会在API文档的某个地方找到。

关于r - 已成功将分页的JSON对象强制转换为R数据框,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29997325/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com