【问题标题】:Problem reading xlsx file downloaded by R读取 R 下载的 xlsx 文件时出现问题
【发布时间】:2020-01-20 12:30:02
【问题描述】:

我正在尝试在 R 中读取以下文件

https://www.ssga.com/us/en/individual/etfs/library-content/products/fund-data/etfs/us/holdings-daily-us-en-xop.xlsx

当我将 url 直接粘贴到浏览器中时它可以工作,但由于某种原因,当它通过 R 下载时它无法打开。

我已经尝试了 download.file() 及其所有可接受的方法('lib-curl/internal/wininet/...')

u <- 'https://www.ssga.com/us/en/individual/etfs/library-content/products/fund-data/etfs/us/holdings-daily-us-en-xop.xlsx'

download.file(u)

下载的文件无法手动打开,也无法通过 readxl::read_xlsx() 或 gdata::read.xls() 在 R 中打开

我也尝试过 httr 包,但似乎不支持内容类型“xlsx:application/vnd.openxmlformats-officedocument.spreadsheetml.sheet”。 但是我确实了解到该文件似乎已被 gzip 压缩,但我什至不确定这是否是问题

response <- httr:Get(u)
response$headers$`content-encoding`
"gzip"

有人可以建议我如何在 R 中下载这些数据吗?

【问题讨论】:

    标签: r xlsx


    【解决方案1】:

    您需要在download.file 中使用mode = "wb" 将其保存为二进制文件:

    u <- 'https://www.ssga.com/us/en/individual/etfs/library-content/products/fund-data/etfs/us/holdings-daily-us-en-xop.xlsx'
    tmp <- tempfile() 
    download.file(u, tmp, mode = "wb")
    readxl::read_xlsx(tmp)
    
    #> # A tibble: 74 x 8
    #>    `Fund Name:`     `SPDR® S&P® Oil & Gas~ X__1   X__2   X__3   X__4      X__5  X__6  
    #>    <chr>            <chr>                  <chr>  <chr>  <chr>  <chr>     <chr> <chr> 
    #>  1 Ticker Symbol:   XOP                    <NA>   <NA>   <NA>   <NA>      <NA>  <NA>  
    #>  2 Holdings:        As of 17-Jan-2020      <NA>   <NA>   <NA>   <NA>      <NA>  <NA>  
    #>  3 <NA>             <NA>                   <NA>   <NA>   <NA>   <NA>      <NA>  <NA>  
    #>  4 Name             Ticker                 Ident~ SEDOL  Weight Sector    Shar~ Local~
    #>  5 Apache Corporat~ APA                    03741~ 20439~ 3.668~ Oil & Ga~ 2896~ USD   
    #>  6 Occidental Petr~ OXY                    67459~ 26554~ 2.913~ Integrat~ 1639~ USD   
    #>  7 WPX Energy Inc.  WPX                    98212~ B40PC~ 2.784~ Oil & Ga~ 5668~ USD   
    #>  8 Concho Resource~ CXO                    20605~ B1YWR~ 2.742~ Oil & Ga~ 7852~ USD   
    #>  9 EOG Resources I~ EOG                    26875~ 23180~ 2.709~ Oil & Ga~ 8191~ USD   
    #> 10 Hess Corporation HES                    42809~ 20237~ 2.689~ Oil & Ga~ 9922~ USD   
    #> # ... with 64 more rows
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2015-08-02
      • 2014-03-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多