2016-05-23 104 views
0

我有另一個Stata日期問題。我有兩個數據集,一個帶有ID和日期。這是第一個數據集:Stata在滯後日期合併

* Example generated by -dataex-. To install: ssc install dataex 
clear 
input long ID float Date 
104203 18820 
104203 18950 
104203 19294 
104203 20001 
104203  . 
112589 17083 
112589 18684 
112589 19291 
112589 19292 
112589 19312 
112589 19752 
123712 18565 
123712 19207 
123712 19270 
123712 19303 
220348 19230 
220348 19278 
220348 19861 
227642 17065 
227642 17079 
end 
format %td Date 

第二個數據集包含相同的ID和滯後0-1000天的第一個日期(但多數是在15天):

* Example generated by -dataex-. To install: ssc install dataex 
clear 
input long ID float COMDATE2 
112589 17994.756 
112589 18686.793 
112589 19753.74 
112589   . 
123712 19303.693 
123712   . 
123712   . 
123712   . 
220348 19278.777 
220348   . 
220348   . 
220348   . 
227642 17066.824 
227642 17079.799 
227642 17940.855 
227642 17948.822 
227642 18735.777 
227642 19066.748 
227642 20181.797 
227642   . 
end 
format %td COMDATE2 

我想把merge這兩個文件放在一起。我試過一次,但日期沒有對齊:

merge m:m ID using "C:filename", 
gen lag = COMDATE2-Date 
bys ID: egen minimum_lag=min(lag) 
gen Committment=lag if lag==minimum_lag & lag >=1000 
bys ID Date(Committment) : keep if _n==1 

我正在尋找一種方式來適當merge這兩套使日期以最小的滯後時間對齊。

回答

0

merge m:m存在但通常是一個壞主意,因爲許多關於Statalist的線程都解釋。

從您的示例中,任何merge都沒有成功的機會,因爲一個數據集中的所有日期都是整數(每日日期),而另一個日期中的所有日期都有小數部分,所以片刻檢查顯示沒有任何觀察結果對齊。 merge中沒有近似或最近匹配的概念。

這裏有什麼實質性的故事?表面上你有兩種日期時間,加入文件的適當方式是append

此外,您的示例缺少日期和日期時間,不能merge信息。

當然沒有人可以評論任何其他變量可能在任何一個數據集中。