【问题标题】:readxl: read numeric column labels (wide data)readxl:读取数字列标签(宽数据)
【发布时间】:2020-11-05 14:09:12
【问题描述】:

我正在使用 readxl 读取 R tidyverse 中的 Excel 文件。这是一个广泛的数据集,即以年份作为列标签(例如 2010、2015 等)。

标签被 readxl 解释为数字,df 列标签现在称为 2010.0、2015.0 等。我如何告诉 readxl“保持原样”,并有标签“2010”、“2015”等。 ?

df <- readxl::read_excel("Population-SSP1-Countries.xlsx", col_names = TRUE)

head(df)
> # A tibble: 6 x 25`
> Model Scenario Region Variable Unit   `2010.0` `2015.0` `2020.0` `2025.0` `2030.0`
> <chr> <chr>    <chr>  <chr>    <chr>    <dbl>    <dbl>    <dbl>   <dbl>    <dbl>
> 1 IIAS… SSP1     ABW    Populat… mill…    0.107    0.118    0.124    0.130    0.135`
> 2 NCAR  SSP1     ABW    Populat… mill…    0.107    0.118    0.124    0.130    0.135
> 3 OECD… SSP1     ABW    Populat… mill…    0.107    0.118    0.124    0.13     0.135`

我可以提供合适的.xlsx,不知道如何在这里上传。

谢谢!

【问题讨论】:

  • 也许只是重命名列名?
  • 我过去使用过的一种可能性,但是对于具有多列的数据集来说,代码不是很通用并且很长。我想知道我似乎是第一个为此绊倒的人?
  • 看起来像一个已知问题,仍处于打开状态,请参阅 community.rstudio.com/t/readxl-changing-my-column-headers/1858github.com/tidyverse/readxl/issues/360
  • 谢谢,在阅读了第一篇文章 (community.rstudio.com/t/readxl-sharing-my-column-headers/1858) 之后,我意识到 Ecel 的单元格类型为“数字”是一个问题" 用于列标题。在 Excel 中将此更改为“文本”可以消除 readxls 的问题。也可以解释为什么保罗无法重现这一点。
  • @Steffen 可能会发布您的评论作为您自己问题的答案,它可能会对未来的读者有所帮助:)

标签: r readxl


【解决方案1】:

一个选项是重命名列名:

library(stringr)
names(df) <- stringr::str_remove(colnames(df), "\\.0")

【讨论】:

  • 谢谢,这对后期处理很有用!
【解决方案2】:

看完之后 community.rstudio.com/t/readxl-changing-my-column-headers/1858

我意识到 Ecel 的列标题有一个单元格类型“数字”是一个问题。在 Excel 中将列标签的单元格类型更改为“文本”可以消除 readxls 的问题。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2013-05-24
    • 2015-06-09
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2010-12-24
    相关资源
    最近更新 更多