当输入的是自01-01-60以来的天数时,如何打印日期?

问题描述

我收到了一组日期,但事实证明,该特定数据集中的时间是自1月1日至1960年以来的天数。

  D_INDDTO
1    20758
2    20856
3    21062
4    19740
5    21222
6    21203

Patient 120758的特定感兴趣日期是01-01-60

我想创建一个新的协变量u$date,其中包含特定的关注日期i d%m%y%。我尝试过

library(tidyverse) 
u %>% mutate(date=as.date(D_INDDTO,origin="1960-01-01")

但这并不能解决问题。

u <- structure(list(D_INDDTO = c(20758,20856,21062,19740,21222,21203,20976,20895,18656,18746)),row.names = c(NA,10L),class = "data.frame")

解决方法

尝试一下:

#Code 1
u %>% mutate(date=as.Date("1960-01-01")+D_INDDTO)

输出:

   D_INDDTO       date
1     20758 2016-10-31
2     20856 2017-02-06
3     21062 2017-08-31
4     19740 2014-01-17
5     21222 2018-02-07
6     21203 2018-01-19
7     20976 2017-06-06
8     20895 2017-03-17
9     18656 2011-01-29
10    18746 2011-04-29

或者这个:

#Code 2
u %>% mutate(date=as.Date(D_INDDTO,origin="1960-01-01"))

输出:

   D_INDDTO       date
1     20758 2016-10-31
2     20856 2017-02-06
3     21062 2017-08-31
4     19740 2014-01-17
5     21222 2018-02-07
6     21203 2018-01-19
7     20976 2017-06-06
8     20895 2017-03-17
9     18656 2011-01-29
10    18746 2011-04-29

或者这个:

#Code 3
u %>% mutate(date=format(as.Date(D_INDDTO,origin="1960-01-01"),'%d%m%y'))

输出:

   D_INDDTO   date
1     20758 311016
2     20856 060217
3     21062 310817
4     19740 170114
5     21222 070218
6     21203 190118
7     20976 060617
8     20895 170317
9     18656 290111
10    18746 290411

如果需要更多自定义:

#Code 4
u %>% mutate(date=format(as.Date(D_INDDTO,'%d-%m-%Y'))

输出:

   D_INDDTO       date
1     20758 31-10-2016
2     20856 06-02-2017
3     21062 31-08-2017
4     19740 17-01-2014
5     21222 07-02-2018
6     21203 19-01-2018
7     20976 06-06-2017
8     20895 17-03-2017
9     18656 29-01-2011
10    18746 29-04-2011