嘿,大家好,我数据框里的日期是这样的:
0102
0103
0104
这可以翻译为
January 2
January 3
January 4
显示日期显然不是最好的方式,所以我想将其转换为更具可读性的内容。我使用下面的代码来尝试这样做:
as.Date(paste0("2018",date),format="%Y%m%d")
我希望它能将月份和日期分开,让它看起来更干净一些,然后再加上2018年。不过,这是我用同样的三个日期换来的
2018-10-02
2018-10-03
2018-10-04
所以我认为它忽略了日期"0104“中"1”前面的0,所以它将其读作"10-4“而不是"01-04”。有谁有办法解决这个问题吗?谢谢!
发布于 2020-11-01 08:31:48
看起来你是在以numeric
的形式读入date
,它去掉了前导的0
s。你可以使用stringr::str_pad
将它们添加回来。
date <- c(0102, 0103, 0104)
as.Date(
paste0("2018", stringr::str_pad(date, 4, pad = "0")),
format = "%Y%m%d"
)
#> [1] "2018-01-02" "2018-01-03" "2018-01-04"
但是,最好是以character
的形式读取date
,这样就不会发生剥离。
发布于 2020-11-01 09:54:24
使用sprintf
:
x <- c(0102, 0103, 0104, 0110)
as.Date(sprintf('2018%04d', x), '%Y%m%d')
[1] "2018-01-02" "2018-01-03" "2018-01-04" "2018-01-10"
您还可以使用lubridate::ymd
更改为日期。
lubridate::ymd(sprintf('2018%04d', x))
https://stackoverflow.com/questions/64627612
复制相似问题