Stata: 時間變數處理

其實不管是資料庫或是統計資料,只要碰到時間變數,就要小心處理,免得因為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 新變數

至於要選哪一種,就看你看哪一種順眼了。

日期比較

一旦轉換到日期格式,就可以進行比較了。如果你要看兩個日期之間差幾天,就只要把兩個日期相減就行了。

日期加減

日期加減也是一樣,直接在原本的日期加減天數,這還是日期格式。

日期與特定日期加減

如果你想要你的日期與特定的日期加減,如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

標籤: