从 R 中的网站下载一个 zip 文件内的 xlsx 文件

问题描述 投票:0回答:1

我在 R 工作,试图从乌拉圭获得一个国家指数,我需要计算不变价格。

在我使用 httr 包中的 fil 函数和下一行代码之前:

fil= GET("https://www.ine.gub.uy/c/document_library/get_file?uuid=ed831b06-8dbd-437c-81cf-c814b4248b06&groupId=10181", 
write_disk("ine.xlsx", overwrite = T))

有了这个,所有的工作都完成了。

问题是最近网页变了,现在我以前下载的文件, 它是一个 zip 文件,我现在正在努力从 zip 中获取一个 excel 文件。

这里我留下了url方向。网址 :

https://www5.ine.gub.uy/documents/Estad%C3%ADsticasecon%C3%B3micas/SERIES%20Y%20OTROS/IPC/Base%20Octubre%202022=100/IPC%20-%20Base%20Octubre%202022=100.rar

我尝试过存档包和下载文件,但我什至无法接近我的目标。

有什么建议吗?

如果你们有人想知道,我想要从 zip 中提取的文件是下一个:

IPC General_Total Pais_Montevideo_Interior_base 2022.xlsx

另一个事实是我的电脑里有 7-zip。不知道它是否改变了什么。

已经谢谢了!

r 7zip
1个回答
2
投票

这是一个 Rar 存档,将其保存为其他内容(如 zip)可能会使提取器感到困惑。如果您碰巧使用

download.file()
,您很可能必须将它与
mode = "wb"
一起使用,至少使用 Windows 上的默认下载方法:

二进制传输的选择(

mode = "wb"
"ab"
)在 Windows 上很重要,因为与 Unix-alikes 不同,它确实区分文本和二进制文件以及文本传输更改 行尾为 (又名“CRLF”)。

尽管使用

archive
包你可以将它指向 URL,如果你不想保留存档:

rar  <- "https://www5.ine.gub.uy/documents/Estad%C3%ADsticasecon%C3%B3micas/SERIES%20Y%20OTROS/IPC/Base%20Octubre%202022=100/IPC%20-%20Base%20Octubre%202022=100.rar"
filename <- "IPC General_Total Pais_Montevideo_Interior_base 2022.xlsx"
archive::archive_extract(archive = rar, 
                         dir = tempdir(), 
                         files = filename)
readxl::read_xlsx(file.path(tempdir(), filename))
#> Warning: Expecting numeric in A1032 / R1032C1: got 'Fuente: Instituto Nacional
#> de Estadística (INE).'
#> # A tibble: 1,031 × 5
#>      Año   Mes `General Total Pais` `General Montevideo` `General Interior`
#>    <dbl> <dbl>                <dbl> <chr>                <chr>             
#>  1  1937     7          0.000000159 ..                   ..                
#>  2  1937     8          0.000000160 ..                   ..                
#>  3  1937     9          0.000000159 ..                   ..                
#>  4  1937    10          0.000000160 ..                   ..                
#>  5  1937    11          0.000000161 ..                   ..                
#>  6  1937    12          0.000000161 ..                   ..                
#>  7  1938     1          0.000000162 ..                   ..                
#>  8  1938     2          0.000000156 ..                   ..                
#>  9  1938     3          0.000000155 ..                   ..                
#> 10  1938     4          0.000000155 ..                   ..                
#> # ℹ 1,021 more rows

创建于 2023-03-22 与 reprex v2.0.2

© www.soinside.com 2019 - 2024. All rights reserved.