I want to convert my integer column to Date. the integer number looks like this (20160101). When using the as.Date function and by typing the origin argument to be \"2016-01
just for your interest an alternative approach using lubridate and just keeping month and day.
tmp <- as.integer(x = 20160101)
tmp %>% lubridate::ymd() %>% format("%m-%d")
Please notice, that you will be left with just a string afterwards.
tmp %>% lubridate::ymd() %>% format("%m-%d") %>% is.Date()
Is going to be FALSE
. Without the cutoff of the year it will be TRUE
. So to keep the date format, like Tim mentioned, an alternative lubridate approach would be:
tmp %>% lubridate::ymd()
Use the format
option when calling as.Date
:
dates <- as.character(data$YearMonthDay)
data$newVar = as.Date(dates, format="%Y%m%d")
Note that you don't need to use the origin
parameter here, because even though you are passing in numerical data, it is in the form of an actual text date. origin
is used when passing in number of days since an epoch.
so I want to format the date to include only the month and day
It is generally not advisable to go in this direction, and in any case, base R date's have to have a year component. So, include the year component, and if you don't want to use it, then don't use it.