在 R 中将整数转换为日期

Converting Integers to Date in R

我想将整数列转换为日期。整数看起来像这样(20160101)。使用 as.Date 函数并输入原点参数为“2016-01-02”时,生成的新列具有以下错误值“55197-07-06”。所以它与写入值无关。我尝试了这么多代码可能是什么错误,这是其中之一:

data$newVar = as.Date(data$YearMonthDay, origin="2016-01-02")

此外,我的日期都是 2016 年,所以我想将日期格式化为仅包含月份和日期。

调用时使用format选项as.Date:

dates <- as.character(data$YearMonthDay)
data$newVar = as.Date(dates, format="%Y%m%d")

请注意,这里不需要使用origin参数,因为即使您传入的是数值数据,它也是实际文本日期的形式。 origin 用于传递自纪元以来的天数。

so I want to format the date to include only the month and day

通常不建议朝这个方向发展,无论如何,基准 R 日期必须包含年份部分。所以,把年的成分包括进去,不想用就别用。

为了您的兴趣,另一种方法是使用 lubridate 并只保留月份和日期。

tmp <- as.integer(x = 20160101) tmp %>% lubridate::ymd() %>% format("%m-%d")

请注意,之后您将只剩下一个字符串。

tmp %>% lubridate::ymd() %>% format("%m-%d") %>% is.Date()

即将 FALSE。如果没有年份的截止日期,它将是 TRUE。因此,为了保持日期格式,就像 Tim 提到的那样,另一种 lubridate 方法是:

 tmp %>% lubridate::ymd()

你也可以使用anytime,你只需要先将其转换为字符串即可。

library(anytime)
date <- as.character(20210630)
anytime(date)
#> [1] "2021-06-30 CEST"

reprex package (v2.0.0)

创建于 2022-02-02