Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

How to convert a numeric value into a Date value

Tags:

r

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.

like image 457
Curious G. Avatar asked Apr 12 '19 14:04

Curious G.


People also ask

How do I change a number into a date format?

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.

How do I convert 8 digits to dates in Excel?

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.


3 Answers

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")
like image 166
akrun Avatar answered Oct 18 '22 19:10

akrun


If this is an excel numeric date, janitor has a great solution:

library(janitor)

excel_numeric_to_date(data$Date.birth)
like image 25
tomasu Avatar answered Oct 18 '22 20:10

tomasu


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)
like image 26
Rushabh Patel Avatar answered Oct 18 '22 19:10

Rushabh Patel