R 将API调用转换为数据帧时出现的问题
我想从comtrade数据库的API调用中创建一个数据帧。 comtrade数据库在其一侧提供此代码。但是,为我的参数修改它并不会产生所希望的结果 代码如下所示:R 将API调用转换为数据帧时出现的问题,r,api,dataframe,rjson,R,Api,Dataframe,Rjson,我想从comtrade数据库的API调用中创建一个数据帧。 comtrade数据库在其一侧提供此代码。但是,为我的参数修改它并不会产生所希望的结果 代码如下所示: library("rjson") string <- get.Comtrade(px = "HS", ps = "2002" , p = "124" , r = "842" , fmt = "json") reporters <- fromJSON(file = string) reporters <- as.dat
library("rjson")
string <- get.Comtrade(px = "HS", ps = "2002" , p = "124" , r = "842" , fmt = "json")
reporters <- fromJSON(file = string)
reporters <- as.data.frame(t(sapply(reporters$results,rbind)))
get.Comtrade <- function(url = "http://comtrade.un.org/api/get?"
,maxrec = 50000
,type = "C"
,freq = "A"
,px = "HS"
,ps = "now"
,r = ""
,p = ""
,rg = "all"
,cc = "TOTAL"
,fmt = "json") {
string <- paste(
url
,"max=",maxrec,"&" #maximum no. of records returned
,"type=",type,"&" #type of trade (c=commodities)
,"freq=",freq,"&" #frequency
,"px=",px,"&" #classification
,"ps=",ps,"&" #time period
,"r=",r,"&" #reporting area
,"p=",p,"&" #partner country
,"rg=",rg,"&" #trade flow
,"cc=",cc,"&" #classification code
,"fmt=",fmt #Format
,sep = ""
)
if (fmt == "csv") {
raw.data <- read.csv(string,header = TRUE)
return(list(validation = NULL, data = raw.data))
} else {
if (fmt == "json") {
raw.data <- fromJSON(file = string)
data <- raw.data$dataset
validation <- unlist(raw.data$validation, recursive = TRUE)
ndata <- NULL
if (length(data) > 0) {
var.names <- names(data[[1]])
data <- as.data.frame(t(sapply(data,rbind)))
ndata <- NULL
for (i in 1:ncol(data)) {
data[sapply(data[,i],is.null),i] <- NA
ndata <- cbind(ndata, unlist(data[,i]))
}
ndata <- as.data.frame(ndata)
colnames(ndata) <- var.names
}
return(list(validation = validation,data = ndata))
}
}
}
任何类型的帮助都会被推荐并受到良好的业力的尊重
向您致意,Sara我认为字符串应指定为:
string <- "http://comtrade.un.org/data/cache/reporterAreas.json"
string我认为应该将字符串指定为:
string <- "http://comtrade.un.org/data/cache/reporterAreas.json"
stringstring实际上,我从Comtrade方面复制了这个,并相信它能工作。你知道如何解决我的问题吗?你是复制了整个脚本还是只复制了函数?绝对不知道,对不起。希望你不是在要求数据如果你一眼就没想到基本的作业,那么在进一步尝试之前,先读一本R教程,否则你很快就会撞到墙上。string好吧,我实际上是从Comtrade方面复制了这本书,并相信它会起作用。你知道如何解决我的问题吗?你是复制了整个脚本还是只复制了函数?绝对不知道,对不起。希望你不是在要求数据,如果你第一眼没想到基本的作业,那么在尝试进一步学习之前,先阅读R教程,否则你很快就会把头撞到墙上。
string <- "http://comtrade.un.org/data/cache/reporterAreas.json"
data<-get.Comtrade(px = "HS", ps = "2002" , p = "124" , r = "842" , fmt = "json")