Json 循环通过API并将结果放入单个data.frame中
我有一个唯一对象ID的列表,我想通过API循环。目标是获得包含所有对象和获得的结果的单个data.frame 这样我就得到了唯一对象的列表Json 循环通过API并将结果放入单个data.frame中,json,r,api,Json,R,Api,我有一个唯一对象ID的列表,我想通过API循环。目标是获得包含所有对象和获得的结果的单个data.frame 这样我就得到了唯一对象的列表 url <- "http://mapakriminality.cz/api/" path <- "api/areas/?level=3" raw.result_codes <- GET(url = url, path = path) this.raw.content_codes <- rawToC
url <- "http://mapakriminality.cz/api/"
path <- "api/areas/?level=3"
raw.result_codes <- GET(url = url, path = path)
this.raw.content_codes <- rawToChar(raw.result_codes$content)
this.content_codes <- fromJSON(this.raw.content_codes)
this.content_codes_df <- as.data.frame(this.content_codes)
this.content_codes_df <- this.content_codes_df[- c(523,
524,
525),]
this.content_codes_list <- list(this.content_codes_df[,1])
我想要的是这样的结果:
crimes.CrimeRate crimes.Found crimes.Solved
1 235.1567 604 449
crimes.CrimeRate crimes.Found crimes.Solved object_ID
1 235.1567 604 449 19091
2 X2 Y2 Z2 W2
3 X3 Y3 Z3 W3
如果我正确理解了您想要做的事情,下面是一个基于您的代码的简单循环,用于迭代不同的区号,下载数据并更新数据帧。这不是最有效的方法,但解决方案简单易懂:
this.content_codes_list <- this.content_codes_df[,1]
url2 <- "http://mapakriminality.cz/api/"
this.content_crimes_df <- data.frame(crimes.Crime=rep(0,length(this.content_codes_list)),
Rate.crimes.Found=rep(0,length(this.content_codes_list)),
crimes.Solved=rep(0,length(this.content_codes_list)),
object_ID=this.content_codes_list)
for (i in 1:length(this.content_codes_list)){
print(i) #optional
path2 <- paste0("api/crimes?areacode=",
this.content_codes_list[i],
"&crimetypes=101-903&timefrom=1-2014$&timeto=12-2014&groupby=area")
raw.result_crimes <- GET(url = url2, path = path2)
this.raw.content_crimes <- rawToChar(raw.result_crimes$content)
this.content_crimes <- fromJSON(this.raw.content_crimes)
this.content_crimes_df[i,1:3] <- as.data.frame(this.content_crimes)
}
this.content_codes_list <- this.content_codes_df[,1]
url2 <- "http://mapakriminality.cz/api/"
this.content_crimes_df <- data.frame(crimes.Crime=rep(0,length(this.content_codes_list)),
Rate.crimes.Found=rep(0,length(this.content_codes_list)),
crimes.Solved=rep(0,length(this.content_codes_list)),
object_ID=this.content_codes_list)
for (i in 1:length(this.content_codes_list)){
print(i) #optional
path2 <- paste0("api/crimes?areacode=",
this.content_codes_list[i],
"&crimetypes=101-903&timefrom=1-2014$&timeto=12-2014&groupby=area")
raw.result_crimes <- GET(url = url2, path = path2)
this.raw.content_crimes <- rawToChar(raw.result_crimes$content)
this.content_crimes <- fromJSON(this.raw.content_crimes)
this.content_crimes_df[i,1:3] <- as.data.frame(this.content_crimes)
}
for (i in 1:length(this.content_codes_list)){
print(i) #optional
path2 <- paste0("api/crimes?areacode=",
this.content_codes_list[i],
"&crimetypes=101-903&timefrom=1-2014$&timeto=12-2014&groupby=area")
raw.result_crimes <- GET(url = url2, path = path2)
this.raw.content_crimes <- rawToChar(raw.result_crimes$content)
this.content_crimes <- fromJSON(this.raw.content_crimes)
output.df <- as.data.frame(this.content_crimes)
if (nrow(output.df)!=0){
output.df$object_ID <- this.content_codes_list[i]
if (i==1){
this.content_crimes_df <- output.df
}else{
this.content_crimes_df <- rbind.data.frame(this.content_crimes_df, output.df)
}
}
}
this.content_crimes_df
crimes.CrimeRate crimes.Found crimes.Solved object_ID
1 8239.2655 3051 587 001110
2 2012.8364 2603 626 001111
3 2322.2749 1176 202 001112
4 3462.3317 2854 882 001114
5 268.7800 970 323 001115
6 422.5964 1556 414 001116
7 269.8192 679 241 001117
...