其實不管是資料庫或是統計資料,只要碰到時間變數,就要小心處理,免得因為coding錯誤造成資料不正確或格式不一致。
產生時間變數
在轉換成時間變數之前,變數通常是用兩種方式儲存的:一種是字串,一種是數字。字串就如同是:1 Jan 1960,變數就如同是:17869這樣的數字。這兩種格式都可以轉換成時間變數。
字串
如果是像1 Jan 1960 的string variable,你要轉換的方式是:
gen 新變數 = date(舊變數, "DMY”)
完成之後,你會發現新的變數的值是數字,像是0, 1046這樣的值。這是因為這個值是與1 Jan 1960 相比較所得的值,正值代表在這個時間之後幾天,負值代表在這個時間之前幾天。這種格式在許多資料庫都很普遍,毋需驚訝,只要再一步驟轉換即可。
數字
如果你的日期是與1 Jan 1960 所比較的值,只需要再一步,就可以轉換成可讀的格式了。轉換的語法如下:
簡單版:
format 新變數 %d
複雜版:
format %tdnn/dd/CCYY 新變數 <br />
至於要選哪一種,就看你看哪一種順眼了。
日期比較
一旦轉換到日期格式,就可以進行比較了。如果你要看兩個日期之間差幾天,就只要把兩個日期相減就行了。
日期加減
日期加減也是一樣,直接在原本的日期加減天數,這還是日期格式。
日期與特定日期加減
如果你想要你的日期與特定的日期加減,如1 Jan 2000,那這稍稍麻煩一點。
gen 新變數 = (mdy(1,1,2000) - 舊變數)
上面的語法就可以得知你的舊變數與1 Jan 2000相差幾天。如果你的舊變數是生日,你可以除以365.25來得知在當天幾歲。
參考資源
Using dates in Stata http://www.ats.ucla.edu/stat/stata/modules/dates.htm
求賜教,如果我現在有一列日期變量(如:20120101)如何運算得到兩天前一列日期變量。