преобразовать дату в числовую и обратно в дату - PullRequest
0 голосов
/ 16 января 2019

У меня есть дата, когда я пытаюсь преобразовать их в числа, а затем вернуться к исходной дате.

      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"

Я замечаю проблему временного интервала. Что я должен сделать, чтобы получить оригинальные даты?

1 Ответ

0 голосов
/ 16 января 2019

Если у вас есть фрейм данных со столбцом класса 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)
...