我想将整数列转换为Date。整数看起来像这样(20160101)。使用as.Date函数并通过将origin参数键入为“ 2016-01-02”时,generate new列具有以下值,这是错误的“ 55197-07-06”。因此,它与写值无关。我尝试了很多代码,这可能是错误之一,这是其中之一:
data$newVar = as.Date(data$YearMonthDay, origin="2016-01-02")
此外,我的日期都是2016年,因此我想将日期格式化为仅包含月份和日期。
答案 0 :(得分:1)
在调用format
时使用as.Date
选项:
dates <- as.character(data$YearMonthDay)
data$newVar = as.Date(dates, format="%Y%m%d")
请注意,您无需在此处使用origin
参数,因为即使您要传递数字数据,它也可以是实际文本日期的形式。自一个纪元以来经过的天数时使用origin
。
所以我想格式化日期,使其仅包含月份和日期
通常不建议朝这个方向前进,无论如何,基准R日期必须包含年份成分。因此,请包括年份组件,如果您不想使用它,那就不要使用它。
答案 1 :(得分:1)
为了您的利益,使用lubridate并保持月份和日期不变的另一种方法。
tmp <- as.integer(x = 20160101)
tmp %>% lubridate::ymd() %>% format("%m-%d")
请注意,之后您将只剩下一个字符串。
tmp %>% lubridate::ymd() %>% format("%m-%d") %>% is.Date()
将为FALSE
。如果没有年份的截止日期,它将为TRUE
。因此,要保持日期格式(如Tim所述),另一种润滑方法是:
tmp %>% lubridate::ymd()