将数字转换为日期问题

时间:2015-08-21 15:39:49

标签: r date lubridate

我有一个数字日期列,如下所示

       Date1
       4010
       5178
       5494
       6750
       7106
       39
       39
       172
       1704
       4152

我正在尝试使用此功能将其转换为实际日期

 as.Date(df$Date1, origin = "1970-01-01")

但我发现这些数字会转换为不正确的日期。

    Date1_Converted
    1980-12-24
    1984-03-26
    1985-01-16
    1988-06-25
    1989-06-16
    1970-02-09
    1970-02-09
    1970-06-22
    1974-09-01
    1981-05-15

正确的转换应该是

    Date1_CrctTrnsf
    2005.10.31
    2009.02.11
    2009.12.04        
    2013.05.15
    2014.05.06
    1994.02.22
    1994.02.22 
    1994.08.03
    1999.05.03
    2006.03.22 

我认为这是一个原因问题,不知道如何解决这个问题,非常感谢任何有关如何解决此问题的帮助。

1 个答案:

答案 0 :(得分:0)

# First I copied the data from your question
df <- read.table(con <-file("clipboard"), header = T)
df

# Convert the format
df1 <- as.Date(df$Date1, origin = "1994-11-08")
df1
> as.data.frame(gsub("-", ".", df1))
   gsub("-", ".", df1)
1           2005.10.31
2           2009.01.11
3           2009.11.23
4           2013.05.02
5           2014.04.23
6           1994.12.17
7           1994.12.17
8           1995.04.29
9           1999.07.09
10          2006.03.22

但请注意,数据中似乎存在错误(或者至少是您希望从数据中获得的结果 - 您是如何产生这些数字的?):

  • 第6行的输入为 39
  • 第7行的输入为 39
  • 第8行的输入为 172

172 - 39 = 133

但是,您希望第6行和第7行的日期为1994.02.22,第8行的结果为1994.08.03这在数学上是不可能的,因为这两个日期之间有162天。

Day difference of 162 days