How to properly convert, achieve the equivalence of dates
How to achieve the expected value with the functions to manipulate dates, used in each data.table.
In the case of as.Date, I have varied the origin without achieving the expected result
What to do?
On many occasions I find this numerical format of dates!
the 20200402 format is used on this site
library(data.table)
dt<-as.data.table(list(
yr = c(14610, 14975, 15340, 15706, 16071, 16436, 16801, 17167,
17532, 17897, 18262, 18628, 18993, 19358, 19723, 20089,
20454, 20819, 21184, 21550, 21915, 22280, 22645, 23011,
23376, 23741, 24106, 24472, 24837, 25202, 25567, 25933,
26298, 26663, 27028, 27394, 27759, 28124, 28489, 28855)))
#help as.Date {base}
## date given as number of days since 1900-01-01 (a date in 1989)
#as.Date(32768, origin = "1900-01-01")
dt[,`:=`(expected=as.IDate(yr),date=as.Date(yr,origin = "1900-01-01")),]
print(dt,topn=3)
yr expected date
1: 14610 2010-01-01 1940-01-02
2: 14975 2011-01-01 1941-01-01
3: 15340 2012-01-01 1942-01-01
---
38: 28124 2047-01-01 1977-01-01
39: 28489 2048-01-01 1978-01-01
40: 28855 2049-01-01 1979-01-02
dt2<-as.data.table(list(
yr = c(20200327,20200327,20200327,20200327,20200327,20200327,20200327,20200327,20200327,
20200327,20200327,20200327,20200327,20200327,20200327,20200327,20200327,20200327,
20200327,20200327,20200327)))
dt2[,`:=`(expected=lubridate::ymd(yr),idate=as.IDate(yr),date=as.Date(yr,origin = "1900-01-01")),]
print(dt2,topn=3)
yr expected idate date
1: 20200327 2020-03-27 57276-08-13 57206-08-14
2: 20200327 2020-03-27 57276-08-13 57206-08-14
3: 20200327 2020-03-27 57276-08-13 57206-08-14
---
19: 20200327 2020-03-27 57276-08-13 57206-08-14
20: 20200327 2020-03-27 57276-08-13 57206-08-14
21: 20200327 2020-03-27 57276-08-13 57206-08-14