So, I have a data.frame with a column called Date.birth, but I have these values in a numeric format:
Date.birth
43067
43060
Probably is problem format. But I need in a Date format like these:
Date.birth
11/28/17
11/21/17
Actually the above format is the correct. I tried this command:
as.Date(levels(data$Date.birth), format="%d.%m.%Y")
but didn't work. Anyone has a suggestion?
Thanks.
On the Home tab, in the Number group, click the Dialog Box Launcher next to Number. You can also press CTRL+1 to open the Format Cells dialog box. In the Category list, click Date or Time. In the Type list, click the date or time format that you want to use.
On the Data tab of the ribbon, click Text to Columns. Click Next >, then Next > again. Under 'Column data format', select Date, then select YMD from the drop-down next to the Date option button. Click Finish.
We need to specify the origin if it is a numeric
value
as.Date(data$Date.birth, origin = "1899-12-30")
e.g.
as.Date(43067, origin = "1899-12-30")
#[1] "2017-11-28"
After converting to Date
class, if it needs to be in a custom format, use format
format(as.Date(43067, origin = "1899-12-30"), "%m/%d/%y")
#[1] "11/28/17"
If your column is factor, do convert to numeric first
as.Date(as.numeric(as.character(data$Date.birth)), origin = "1899-12-30")
If this is an excel numeric date, janitor
has a great solution:
library(janitor)
excel_numeric_to_date(data$Date.birth)
It can be simply done by using lubridate
package-
lubridate::as_date(as.numeric(dt$Date.birth),origin="1899-12-30")
[1] "2017-11-28" "2017-11-21"
Sample Data-
dt <- read.table(text="Date.birth
43067
43060",header=T)
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With