2015-08-22 22 views
0

在Excel或Google表格中,我可以使用DATEVALUE("2015-08-11")函數將日期轉換爲自1900年1月1日以來的天數。Excel /表格DATEVALUE(「2015-08-11」)等效於R

我該如何在R中做到這一點?

+0

您可以嘗試'as.numeric(as.Date('2015-08-11',origin ='1900-01-01'))' – akrun

+0

這給我16658,其中電子表格給我42227 – 43Tesseracts

+0

.. ..和as.numeric一樣(as.Date('2015-08-11'))'?看起來這是1970年的默認設置,而忽略了原點參數? – 43Tesseracts

回答

1

非常感謝akrun給了我一個開始作爲R noob的地方。

默認情況下,R將日期從1970-01-01轉換,所以我需要添加1900-01-01和1970-01-01之間的日期。然後,爲了準確地匹配excel,我需要爲leap year bug/feature和+1添加兩個: +1,因爲1970-01-01一天還沒有被計算在任何地方。

#get number of days since 1970-01-01 
a = as.numeric(as.Date('2015-08-11')) 

# get number of day from 1970 to 1900. This will be negative, so subtract it later 
b = as.numeric(as.Date('1900-01-01')) 

#numeric representation matching Excel and Sheets: 
c = a - b + 2 

也許有更優雅的解決方案呢?