我正试图使用R中的OECD软件包直接从经合组织网站下载数据,我专门尝试从南非的工业生产数据集(https://data.oecd.org/industry/industrial-production.htm)下载数据。我认为数据集本身和南非的代码是MEI_REAL和ZAF。
但是,当我尝试运行以下命令时
df <- get_dataset("MEI_REAL",
filter = 'ZAF',
start_time = 2019, end_time = 2020)我得到以下错误
Error in rsdmx::readSDMX(url) :
HTTP request failed with status: 400 Bad Request有人能告诉我我做错了什么吗?我以前从来没有用过这个包,所以我很难弄清楚。
提亚
发布于 2020-08-15 20:24:06
要真正使用过滤器,它必须类似于
df <- get_dataset("MEI_REAL",
filter = list(c(),'ZAF'),
start_time = 2019, end_time = 2020)由于国家代码在第二栏中,但我不知道您如何能够事先知道这一点,而不只是先下载整个数据集(只需完全删除过滤器参数就可以做到这一点)。
发布于 2020-08-15 20:50:48
问题中的代码失败,因为位置是数据帧中的第二列,而filter =语句没有说明这一点。我们可以通过将NULL添加到传递给filter=参数的list()中来修复请求。
library(OECD)
# filter on second column
saProduction <- get_dataset("MEI_REAL",
filter = list(NULL,"ZAF"),
start_time = 2019,
end_time = 2020)
head(saProduction)...and输出:
> 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()的参数时,我们看到NULL是filter =的一个有效值,所以我推断我可以在过滤器list()中使用它作为一个值。
发布于 2021-06-11 08:08:24
对于任何知道相同问题的人:我的“解决方案”是在过滤器中的不同位置设置您想要的数据格式ID。例如:1.试着:
filter_GDP <- list("B1_GE")
GDP <- get_dataset("QNA", filter_GDP)这将返回一个错误,因此我在筛选器列表的下一个位置设置了dataframe(包括NULL):
filter_GDP <- list(NULL, "B1_GE")
GDP <- get_dataset("QNA", filter_GDP)这是可行的,所以现在您可以查找要筛选的其他参数的位置,在我的例子中:
filter_GDP <- list(NULL,"B1_GE", "CQRSA", "Q")
GDP <- get_dataset("QNA", filter_GDP)https://stackoverflow.com/questions/63430397
复制相似问题