❝我們在使用stata進行資料分析時,可能涉及多個資料文件的合併操作或者同時使用不同資料集中的多個變數,這都需要我們進行文件間不同變數的歸併。❞
例如,我們需要使用cfps(中國家庭追蹤調查)資料庫進行實證分析,而申請拿到的原始資料中包含**資料庫,兒童資料庫,家庭關係庫等多個資料集,我們需要的變數分散在這些資料集中,此時就需要將不同資料庫中的不同變數放到一起;再譬如我們需要cfps多期的調查資料構建多期面板,這又需要我們把多期的資料合併到一起...
help merge
通過幫助命令我們可以觀察到如下語句格式
❝利用幫助檔案的示例演示1對1的資料合併如何操作通過關鍵變數進行1對1合併
merge 1:1 varlist using filename
通過關鍵變數進行多對1合併
merge m:1 varlist using filename
通過關鍵變數進行1對多合併
merge 1:m varlist using filename
通過關鍵變數進行多對多合併
merge m:m varlist using filename
通過觀測數進行1對1合併
merge 1:1 _n using filename
❞
webuse autosizelistwebuse autoexpenselist/*perform 1:1 match merge*/webuse autosizemerge 1:1 make using
通過list
命令,我們可以觀察到 autosize 和 autoexpense 的資料詳情
autosize 資料
make
weight
length
toyota celica
2,410
174bmw 320i
2,650
177cad. seville
4,290
204pont grand prix
3,210
201datsun 210
2,020
165plym. arrow
3,260
170 autoexpense 資料
make
price
mpgtoyota celica
5,899
18bmw 320i
9,735
25cad. seville
15,906
21pont. grand prix
5,222
19datsun 210
4,589
35 根據資料中的make變數,進行 1對1 的合併,在merge
合併中我們需要定義 master 資料集和 using 資料集,相當於我們對於資料集定義主從關係,我們將 autosize 資料集作為master,然後 using autoexpense 資料集1對1合併,那麼可以得到如下合併結果:
使用 merge 後,stata會給出資料 match 的結果,如下表:這個結果告訴我們,兩個資料集中有5個觀測變數成功 match(用_merge==3表示這類變數),有1個觀測變數 not matched,而且這個匹配失敗的變數來自master 資料集 (用_merge==1表示這類變數)。
「資料match結果」
result
# of obs.
not matched
1from master
1 (_merge==1)
from using
0 (_merge==2)
matched
5 (_merge==3)
在資料處理過程中可以在匹配後刪除我們不需要的not matched 的樣本,例如:drop if merge==1
可以直接刪除master資料集中未匹配的樣本。
此外,merge
命令還提供了諸多的選擇項(option)內容,比較常用的有:
keepusing(varlist)
:保留資料集中特定變數
generate(newvar)
:使用新的變數名稱標記merge結果,預設為merge
nogenerate
:不生成merge變數
update
: 用using資料集中的值替代master資料集中相同變數的缺失值
replace
:用using資料集中的值替代master資料集中相同變數的非缺失值
force
:允許字元型和數值型變數之間不匹配
示例中還提供了1:m,m:1,以及多個選擇項使用的例子(我們一般很少用到m:m合併),其操作與解讀與1:1的合併類似
/*進行 1:1 merge, 並保留匹配變數*/webuse autosize, clearmerge 1:1 make using ///keep(match) nogenlist/* setup */webuse dollars, clearlistwebuse sforcelist/*與 sforce 進行 m:1 merge */merge m:1 region using overlap1, clearlist, sepby(id)webuse overlap2list/*進行 1:m merge, 帶update replace選項*/webuse overlap2, clearmerge 1:m id using /// update replacelist /*按樣本進行順序合併*/webuse sforce, clearlistmerge 1:1 _n using
❝使用示例資料演示合併❞
even資料集
number
even612
714816
odd 資料集
number
odd112
3354
759 合併結果
number
oddeven11
.23.
35.4
7.59
.6.12
7.148
.16nolabel
force
等選擇項,使用方法與merge
大同小異
這些操作可以幫助我們在stata中實現資料的橫向與縱向合併。例如在cfps資料集中,可以根據追蹤調查所標記的個人id(pid)和家庭id(fid)等變數從相應資料庫中提取我們所需的變數進行合併;也可以根據調查年份合併我們所需的面板...
在實際中可以根據資料的結構特點和研究需求選擇合適的操作命令,用stata進行資料集的合併你學會了嗎?
stata中 stata中工具變數的檢驗
在使用工具變數法時,必須對工具變數的有效性進行檢驗。如果工具變數不有效,則可能導致估計不一致,或估計量的方差過大。為此,需要進行一系列的檢驗。1.首先,檢驗解釋變數是否具有內生性。使用工具變數法的前提是存在內生解釋變數,即隨機擾動項中有遺漏變數與解釋變數相關,使用的檢驗為 豪斯曼檢驗 如果拒絕h 0...
STATA中eststo命令安裝及使用
常用的est store modelx接est table命令有兩大不方便的地方,一是modelx的資料是儲存在dta檔案中的,換乙個資料集結果就沒了 當然也是優勢,可以讓別人拿到dta檔案後直接看到你的回歸結果 二是 est table輸出結果中不能同時列示 顯著性 和標準差,而且標準差需要自己加...
如何在程式中延時
方法一 使用sleep函式,如延時2秒,用sleep 2000 方法二 使用sleep函式的不利在於延時期間不能處理其他的訊息,如果時間太長,就好象宕機一樣,利用coledatetime類和coledatetimespan類實現延時就不會出現那樣的問題 coledatetime start time...