在 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
我想将整数列转换为日期。整数看起来像这样(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