【问题标题】:Read column names as date format将列名读取为日期格式
【发布时间】:2017-08-03 02:38:48
【问题描述】:

我在 Excel 中有如下日期,首先col1 为字符,从col2col5 为日期格式(mm/dd/yyyy)

id   1/1/2016   2/1/2016  3/1/2016  4/1/2016  5/1/2016
1     23         545       33         55          66
2     454        536       66         80          11
3     83         585        9         10          19

我尝试使用readxl 库将上述文件导入R,结果显示日期格式的列名在数据集中显示为数字,

如何导入相同格式的Excel日期列?

【问题讨论】:

    标签: r datetime readxl


    【解决方案1】:

    由于数据集是excel格式,我们可以用read_excel读取,然后将列名改成原来的格式

    library(readxl)
    library(dplyr)
    read_excel("yourdata.xlsx" %>% 
        setNames(., c('id', format(as.Date(as.numeric(names(.)[-1]), 
                       origin = '1899-12-30'), '%m/%d/%Y')))
    

    【讨论】:

    • 不确定 setNames 的第一个参数是否必要。它由管道提供。
    【解决方案2】:

    列名不能是日期类。我们可以读取数据然后从宽格式到长格式进行整形,以便列名作为日期类在行中,见下文:

    # Save Excel sheet as CSV, then read the data with the headers and without checking the names for columns.
    df1 <- read.table(text="id   1/1/2016   2/1/2016  3/1/2016  4/1/2016  5/1/2016
    1     23         545       33         55          66
    2     454        536       66         80          11
    3     83         585        9         10          19",
                      header = TRUE, check.names = FALSE)
    
    
    library(dplyr)
    library(tidyr)
    
    df1 %>%
      gather(myDate, value, -id) %>% 
      mutate(myDate = as.Date(myDate, format = "%d/%m/%Y"))
    
    #    id     myDate value
    # 1   1 2016-01-01    23
    # 2   2 2016-01-01   454
    # 3   3 2016-01-01    83
    # 4   1 2016-01-02   545
    # 5   2 2016-01-02   536
    # 6   3 2016-01-02   585
    # 7   1 2016-01-03    33
    # 8   2 2016-01-03    66
    # 9   3 2016-01-03     9
    # 10  1 2016-01-04    55
    # 11  2 2016-01-04    80
    # 12  3 2016-01-04    10
    # 13  1 2016-01-05    66
    # 14  2 2016-01-05    11
    # 15  3 2016-01-05    19
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2021-09-02
      • 1970-01-01
      • 1970-01-01
      • 2013-10-09
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多