如何在Stata中组合两个数据集,只保留重叠的变量



我试图在Stata中组合两个数据集,比如data1.dtadata2.dta,只保留重叠的变量,我想drop所有只存在于两个数据集中一个数据集中的变量。

我的想法是用cfvar比较两个数据集:用return list我得到输出r(both)r(oneonly)r(twoonly)。现在,我想使用输出r(oneonly)r(twoonly)循环到dropr(oneonly)r(twoonly)中列出的所有变量,类似于:

for each v of varlist ??how to define the varlist??{ drop v }

我不知道有任何程序cfvar;也许你指的是cfvars(SSC),它原来是我写的。但考虑到Stata的最新版本,这是多余的。你可以去

d using data1, varlist 
local v1 "`r(varlist)'" 
d using data2, varlist 
local v2 "`r(varlist)'" 
local both : list v1 & v2 
u data1 
keep `both' 

然后您需要用data2merge:语法将取决于哪个变量充当标识符。注意mergekeepusing()选项。

我看不出这里需要循环。

最新更新