将R

时间:2018-11-20 10:39:28

标签: r date converters

我想将整数列转换为Date。整数看起来像这样(20160101)。使用as.Date函数并通过将origin参数键入为“ 2016-01-02”时,generate new列具有以下值,这是错误的“ 55197-07-06”。因此,它与写值无关。我尝试了很多代码,这可能是错误之一,这是其中之一:

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

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

2 个答案:

答案 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()