当输入是自 01-01-60 以来的天数时如何打印日期?
How to print a date when the input is number of days since 01-01-60?
我收到了一组日期,但事实证明,在这个特定数据集中,时间是以 1960 年 1 月 1 日以来的天数报告的。
D_INDDTO
1 20758
2 20856
3 21062
4 19740
5 21222
6 21203
Patient 1
感兴趣的具体日期是自 01-01-60
后的 20758
天
我想创建一个新的协变量 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,origin="1960-01-01"),'%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
我收到了一组日期,但事实证明,在这个特定数据集中,时间是以 1960 年 1 月 1 日以来的天数报告的。
D_INDDTO
1 20758
2 20856
3 21062
4 19740
5 21222
6 21203
Patient 1
感兴趣的具体日期是自 01-01-60
20758
天
我想创建一个新的协变量 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,origin="1960-01-01"),'%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