2017-10-10 89 views
0

我是R新手,正在處理398個變量的數據集。不同日期有很多變數。我的400多個科目缺少年齡,但我有所有的出生和死亡日期,所以我希望能夠計算他們的年齡。但是,第一步是以相同格式獲取所有日期。我已經成功與其中幾個,但死亡日期是某種Stata格式。它說:將Stata轉換爲R的日期

str(Data_10_8_17$dateofdeath) 
atomic [1:10381] 17431 16752 18753 19776 17774 ... 
- attr(*, "format.stata")= chr "%9.0g" 

我已經改變了所有的數字供參考。

+2

如果您正在從Stata dta文件讀取數據集,請閱讀'readstata13'包中的read.dta13(...,convert.dates = TRUE)'。它應該爲你自動執行日期轉換。 –

+0

這很有趣,謝謝!我會檢查一下。 – ClaireR

回答

2

只有答案的一部分,但這太長了,並不會作爲評論看起來不錯。

這些數據看起來並不神祕。如果你在Stata中學習help datetime,你會發現每日日期的起源爲0 = 1jan1960。在猜測,他們已經失去了日期格式每天日期,我們可以再次將其推回:

. mata : strofreal((17431, 16752, 18753, 19776, 17774), "%td") 
       1   2   3   4   5 
    +-------------------------------------------------------------+ 
    1 | 22sep2007 12nov2005 06may2011 22feb2014 30aug2008 | 
    +-------------------------------------------------------------+ 

如果這些日期是可以接受的,你現在需要有人勝任中的R來指導你的翻譯。

請注意,格式%9.0g(語法有意識地使人聯想到C中的語法)只是一種通用的數字格式,根本不具有任何奇特的:它是默認的數字顯示格式,不適用於溫和整數。 https://www.stata.com/help.cgi?format是適用於所有人的Stata顯示格式的可訪問文檔,包括需要翻譯的R用戶。