R 将列名读取为日期格式

R 将列名读取为日期格式,r,datetime,readxl,R,Datetime,Readxl,我在Excel中的日期如下,首先col1为字符,从col2到col5为日期格式(mm/dd/yyyy) 我尝试使用readxllibrary将上述文件导入R,结果显示了数据集中以日期格式显示为数字的列名 如何导入格式相同的Excel日期列?列名不能是日期类。我们可以读取数据,然后将其从宽格式改为长格式,以便列名以日期类的形式出现在行中,请参见以下内容: # Save Excel sheet as CSV, then read the data with the headers and witho

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

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


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

列名不能是日期类。我们可以读取数据,然后将其从宽格式改为长格式,以便列名以日期类的形式出现在行中,请参见以下内容:

# 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
#将Excel工作表另存为CSV,然后读取带有标题的数据,而不检查列的名称。
df1%
聚集(myDate,值,-id)%>%
变异(myDate=as.Date(myDate,format=“%d/%m/%Y”))
#id myDate值
# 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

由于数据集为excel格式,我们可以使用
read\u 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的第一个参数是否必要。它是由管道提供的。
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')))