Dat*_*kel 5 api r economics httr
我目前正在尝试从国际货币基金组织的贸易统计方向下载特定系列,以计算国家之间的贸易量。有一个 r-packageimfr在这方面做得非常出色。然而,当我选择特定的一组时,我遇到了问题。
这段代码工作得很好,并为我提供了我感兴趣的五个国家的完整数据系列:
\nlibrary(imfr)\n\n# get the list of imf datasets \nimf_ids()\n\n# I am interested in direction of trade "DOT", so check the list of codes that are in the datastructure\nimf_codelist(database_id = "DOT")\n\n# I want the export and import data between countries FOB so "TXG_FOB_USD" and "TMG_FOB_USD"\nimf_codes("CL_INDICATOR_DOT")\n\n# works nicely for exports:\ndata_list_exports <- imf_data(database_id = "DOT", indicator = c("TXG_FOB_USD"), \n country = c("US","JP","KR"), \n start = "1995",\n return_raw = TRUE, \n freq = "A")\n\n# however the same code does not work for imports\ndata_list_imports <- imf_data(database_id = "DOT", indicator = c("TMG_FOB_USD"), \n country = c("US","JP","KR"), \n start = "1995",\n return_raw = TRUE, \n freq = "A")\nRun Code Online (Sandbox Code Playgroud)\n这将返回一个空系列,我不明白为什么。所以我想,也许美国不在数据集中(尽管不太可能)
\nlibrary(httr)\nlibrary(jsonlite) \n# look at the API endpoint, that provides us with the data structure behind a dataset\nresult <- httr::GET("http://dataservices.imf.org/REST/SDMX_JSON.svc/DataStructure/DTO") %>% httr::content(as = "parsed") \n\nstructure_url <- "http://dataservices.imf.org/REST/SDMX_JSON.svc/DataStructure/DOT"\n\nraw_data <- jsonlite::fromJSON(structure_url )\ntest <- raw_data$Structure$CodeLists\nRun Code Online (Sandbox Code Playgroud)\n然而,结果表明,数据中确实有美国。那么,如果我不\xc2\xb4t 指定一个国家/地区会怎么样?结果最终确实下载了数据,但由于速率限制,只下载了前60个国家。当对 httr::GET 执行相同操作时,我直接达到速率限制并返回错误。
\ndata_list_imports <- imf_data(database_id = "DOT", indicator = c("TMG_FOB_USD"), \n start = "1995",\n return_raw = TRUE, \n freq = "A")\nRun Code Online (Sandbox Code Playgroud)\n有人知道我做错了什么吗?我真的很茫然,只是希望这是某个地方的拼写错误......
\n谢谢,祝一切顺利!
\n这样回答了这个问题:
github 上的 cjyetman 给了我以下提示:
您可以使用 print_url = TRUE 参数来查看实际的 API 调用。
和...
Run Code Online (Sandbox Code Playgroud)imf_data(database_id = "DOT", indicator = c("TMG_FOB_USD"), country = c("US","JP","KR"), start = "1995", return_raw = TRUE, freq = "A", print_url = TRUE)它不返回任何数据。
但是,如果您将“AU”作为国家/地区添加到该列表中,您确实可以通过以下方式获取数据... http://dataservices.imf.org/REST/SDMX_JSON.svc/CompactData/DOT/.AU+US+JP+KR .TMG_FOB_USD?startPeriod=1995&endPeriod=2021
所以我猜想要么他们的 API 目前有问题,要么他们实际上没有专门针对具有该频率的国家/地区的该指标的数据,等等。
这确实有效,并且明显表明 API 中确实存在“缺失数据”,或者我只是在寻找数据,而实际上根本没有数据。由于最初的目的是查看贸易量,我后来发现,通常使用进口价值,即CIF价值而不是FOB。因此,API 调用的正确指示符如下:
library(imfr)
data_list_imports <- imf_data(database_id = "DOT", indicator = c("TMG_CIF_USD"),
country = c("US","JP","KR"),
start = "1995",
return_raw = TRUE,
freq = "A")
Run Code Online (Sandbox Code Playgroud)