我在Excel中的日期如下,首先col1
为char,col2
到col5
为日期格式(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日期列?
答案 0 :(得分:2)
由于数据集采用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')))
答案 1 :(得分:1)
列名不能是日期类。我们可以读取数据然后从宽格式转换为长格式,以便列名作为日期类在行中,见下文:
# 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