将日期转换为数字并返回日期

convert date to numeric and back to date

我有一些日期,我正在尝试将它们转换为数字,然后再恢复为原始日期。

      Date
1990-12-31 
1991-12-31 
1992-12-31 
1993-12-31 
1994-06-30 
1994-12-31 

我试过了,

as.numeric(DF[1:6])
[1]  1  2  3  5  7
as.Date(as.numeric(DF[1:6]), "1990-12-31")
[1] "1991-01-01" "1991-01-02" "1991-01-03" "1991-01-05" "1991-01-07" "1991-01-08"

我注意到时间间隔的问题。我应该怎么做才能获得原始日期?

如果您拥有的是一个数据框,其列为 class factor,如末尾注释中所示,那么我们不想将 as.numeric 应用于该数据框因为那只会给出没有意义的因子水平的基础代码。相反,这给出 Date class:

d <- as.Date(DF$Date)
d
## [1] "1990-12-31" "1991-12-31" "1992-12-31" "1993-12-31" "1994-06-30"
## [6] "1994-12-31"

这给出了自 UNIX 纪元以来的天数:

no <- as.numeric(d)
no
## [1] 7669 8034 8400 8765 8946 9130

这又变成了 Date class:

as.Date(no, "1970-01-01")
## [1] "1990-12-31" "1991-12-31" "1992-12-31" "1993-12-31" "1994-06-30"
## [6] "1994-12-31"

备注

Lines <- "
      Date
1990-12-31 
1991-12-31 
1992-12-31 
1993-12-31 
1994-06-30 
1994-12-31 "
DF <- read.table(text = Lines, header = TRUE)