R:我如何读取基于浏览器的csv



我正在尝试使用CSV格式的API导入R中的数据。url为https://estadisticas.bcrp.gob.pe/estadisticas/series/api/PN01288PM/csv

我尝试的是:

url <- "https://estadisticas.bcrp.gob.pe/estadisticas/series/api/PN01288PM/csv"
data <- read.csv(url)

但这并没有产生预期的结果。数据帧将所有值作为标头。我认为问题是url没有下载实际的csv文件。相反,API生成CSV格式的基于浏览器的表。这可以通过尝试url来验证。

对如何正确导入有什么想法吗?提前谢谢。

以文本形式读取,在<br>上拆分,然后解析为CSV:

txt <- strsplit(readLines("https://estadisticas.bcrp.gob.pe/estadisticas/series/api/PN01288PM/csv"), "<br>")[[1]]
txt[1:2]
# [1] "Mes/A&ntilde;o,"&Iacute;ndice de precios Lima Metropolitana (&iacute;ndice 2009 = 100) - IPC Sin Alimentos""
# [2] ""Mar.2019","127.150411989837""                                                                            
out <- read.csv(text = txt)
str(out)
# 'data.frame': 25 obs. of  2 variables:
#  $ Mes.A.ntilde.o                                                                             : chr  "Mar.2019" "Abr.2019" "May.2019" "Jun.2019" ...
#  $ X.Iacute.ndice.de.precios.Lima.Metropolitana...iacute.ndice.2009...100....IPC.Sin.Alimentos: num  127 127 127 128 128 ...

(不是最好的列名,但……这是一个开始。(

(您可能想向管理员建议,他们可能无法正确理解浏览器窗口中可查看的类似CSV的文本与实际CSV数据之间的区别。(

Juán,欢迎使用StackOverflow。

如果你想把它读成CSV,请使用r2evans答案。然而,Perú中央银行的API与其他格式相比相当强大。我建议将它们的HTML表保存为XLS(即"MS Excel"(和JSON格式。

html表格,XLS文件类型:

library(rvest)
xls_url <- "https://estadisticas.bcrp.gob.pe/estadisticas/series/api/PN01288PM/xls"
table_xls <- html_table(read_html(xls_url))
table_xls
IPC Sin Alimentos
1  Mar.2019          127.1504
2  Abr.2019          127.2806
3  May.2019          127.4804
4  Jun.2019          127.5056
...

json与嵌套表

library(jsonlite)
json_url <- "https://estadisticas.bcrp.gob.pe/estadisticas/series/api/PN01288PM/json"
json_object <- fromJSON(txt = json_url)
table_json <- json_object$periods
table_json
name           values
1  Mar.2019 127.150411989837
2  Abr.2019 127.280597562152
3  May.2019 127.480400572476
...

相关内容

  • 没有找到相关文章

最新更新