在R中更改不一致的日期格式

时间:2019-12-29 22:48:49

标签: r

我有一个日期日期格式不确定的xlsx文件:

xlsx file with different date format

我使用read_xlsx()将文件加载到r中。如何更改和读取(例如2019-12-28)格式的整个文件? 这是我的代码:

file=file.choose()
date=read_xlsx(file)
dim(date)
[1] 37  1
date[1,1]
43827   #this should corrspond to 2019-12-28

我尝试了as.Date(43827, origin = "2019-12-28"),但是得到了[1] "2139-12-26"

编辑评论。

> dput(date)
structure(list(Date = c("43827", "43823", "43821", "43818", "43816", 
"43813", "43811", "43809", "43806", "43804", "28/2/2019", "26/2/2019", 
"23/2/2019", "21/2/2019", "19/2/2019", "16/2/2019", "14/2/2019", 
"43618", "43526", "31/1/2019", "29/1/2019", "43262", "43170", 
"43111", "30/10/2018", "27/10/2018", "25/10/2018", "23/10/2018", 
"42593", "42501", "42440", "42380", "29/10/2016", "27/10/2016", 
"25/10/2016", "22/10/2016", "20/10/2016")), row.names = c(NA, 
-37L), class = c("tbl_df", "tbl", "data.frame"))

3 个答案:

答案 0 :(得分:2)

由于日期采用混合格式,因此可以尝试lubridate::parse_date_time

lubridate::parse_date_time(x, c('Ymd', 'dmY'))
#[1] "2019-12-28 UTC" "2019-02-28 UTC" "2019-10-25 UTC" "2019-06-02 UTC"

anytime::anydate

library(anytime)
addFormats(c('%Y-%m-%d', '%d/%m/%Y'))
anytime::anydate(x)

x替换为列名date$Date。您可以在两种方法中都包括您的日期可以采用的所有可能格式。

数据

x <- c('2019-12-28', '28/2/2019', '25/10/2019', '2019-06-02')

答案 1 :(得分:0)

起源错误,在Excel中是1899年12月30日。

gam

数据:

model <- gam(y ~ s(x) + s(w), data = mydata)

答案 2 :(得分:0)

我制作了一个示例Excel文件,其中包含来自图像的4个日期。之所以有效,是因为我使用col_types='text的{​​{1}}参数以文本形式读取了日期

read_xlsx

希望这对您有用!