2015-08-21 61 views
-1

我有一個日期列,它是數字如下轉換數值迄今問題

 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 

我這個假設的起源問題,不知道如何解決這個問題,就如何解決這個問題的任何幫助深表感謝。

+2

你在它作爲一個起源的問題是正確的。 Date1列中的數據代表什麼?看起來R是把它們當作天,所以這就是爲什麼你最終得到Date1_Converted的輸出(例如4010/365 = 10.986年,這大概是原點和Date1_Converted日期的差異。 –

+0

看起來'Date1'中的數值之間的天數差異與'Date1_CrctTrnsf'中的日期之間的天數不一致,例如,查看第二個和第三個值,5494 - 5178 = 316,而as.numeric(as.Date(「2009-12-04」)) - as.numeric(as.Date(「2009-02-11」)) )'= 296. – eipi10

+0

@ small_data88,我試着在改變原點之前,將原點從'origin =「1970-01-01」'改爲'origin =「1994-01-15」',這樣它只是將39到'1994.02.22',但剩下的日期不正確,你對那些代表天數的數字作出了很好的評價 –

回答

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行的輸入是
  • 7行的輸入是和
  • 8行的輸入是

172 - 39 = 133

但是您希望爲6行和7中的日期是1994.02.22和8行的結果是1994.08.03這在數學上是不可能的,因爲這兩個日期之間有162天。

Day difference of 162 days

+0

我試過,最終輸出使用原點不會產生準確的結果,因爲你可以看到觀察6應該是'1994.02.22' –

+0

請參閱我上面的評論。數字值和預期日期輸出不一致。這不僅僅是一個起源問題。確定數值是以1天爲單位計算的嗎? – eipi10

+0

@ eipi10這是正確的,我試圖從lubridate ymd函數。 :) –