首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >使用经合组织R包从经合组织网站下载数据

使用经合组织R包从经合组织网站下载数据
EN

Stack Overflow用户
提问于 2020-08-15 20:10:32
回答 3查看 836关注 0票数 2

我正试图使用R中的OECD软件包直接从经合组织网站下载数据,我专门尝试从南非的工业生产数据集(https://data.oecd.org/industry/industrial-production.htm)下载数据。我认为数据集本身和南非的代码是MEI_REALZAF

但是,当我尝试运行以下命令时

代码语言:javascript
复制
df <- get_dataset("MEI_REAL",
                  filter = 'ZAF',
                  start_time = 2019, end_time = 2020)

我得到以下错误

代码语言:javascript
复制
Error in rsdmx::readSDMX(url) : 
  HTTP request failed with status: 400 Bad Request

有人能告诉我我做错了什么吗?我以前从来没有用过这个包,所以我很难弄清楚。

提亚

EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2020-08-15 20:24:06

要真正使用过滤器,它必须类似于

代码语言:javascript
复制
df <- get_dataset("MEI_REAL",
                  filter = list(c(),'ZAF'),
                  start_time = 2019, end_time = 2020)

由于国家代码在第二栏中,但我不知道您如何能够事先知道这一点,而不只是先下载整个数据集(只需完全删除过滤器参数就可以做到这一点)。

票数 3
EN

Stack Overflow用户

发布于 2020-08-15 20:50:48

问题中的代码失败,因为位置是数据帧中的第二列,而filter =语句没有说明这一点。我们可以通过将NULL添加到传递给filter=参数的list()中来修复请求。

代码语言:javascript
复制
library(OECD)

# filter on second column
saProduction <- get_dataset("MEI_REAL",
                            filter = list(NULL,"ZAF"),
                            start_time = 2019,
                            end_time = 2020)

head(saProduction)

...and输出:

代码语言:javascript
复制
> head(saProduction)
   SUBJECT LOCATION FREQUENCY TIME_FORMAT UNIT POWERCODE REFERENCEPERIOD obsTime
1 PRMNTO01      ZAF         A         P1Y  IDX         0        2015_100    2019
2 PRMNTO01      ZAF         Q         P3M  IDX         0        2015_100 2019-Q1
3 PRMNTO01      ZAF         Q         P3M  IDX         0        2015_100 2019-Q2
4 PRMNTO01      ZAF         Q         P3M  IDX         0        2015_100 2019-Q3
5 PRMNTO01      ZAF         Q         P3M  IDX         0        2015_100 2019-Q4
6 PRMNTO01      ZAF         Q         P3M  IDX         0        2015_100 2020-Q1
   obsValue
1 100.46670
2 100.97510
3 101.30840
4 100.04170
5  99.47495
6  97.40812 

我怎么知道进入列表的正确条目是NULL?当我们查看get_dataset()的参数时,我们看到NULLfilter =的一个有效值,所以我推断我可以在过滤器list()中使用它作为一个值。

票数 1
EN

Stack Overflow用户

发布于 2021-06-11 08:08:24

对于任何知道相同问题的人:我的“解决方案”是在过滤器中的不同位置设置您想要的数据格式ID。例如:1.试着:

代码语言:javascript
复制
filter_GDP <- list("B1_GE")
GDP <- get_dataset("QNA", filter_GDP)

这将返回一个错误,因此我在筛选器列表的下一个位置设置了dataframe(包括NULL):

代码语言:javascript
复制
filter_GDP <- list(NULL, "B1_GE")
GDP <- get_dataset("QNA", filter_GDP)

这是可行的,所以现在您可以查找要筛选的其他参数的位置,在我的例子中:

代码语言:javascript
复制
filter_GDP <- list(NULL,"B1_GE", "CQRSA", "Q")
GDP <- get_dataset("QNA", filter_GDP)
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/63430397

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档