我试图在Stata中组合两个数据集,比如data1.dta
和data2.dta
,只保留重叠的变量,我想drop
所有只存在于两个数据集中一个数据集中的变量。
我的想法是用cfvar
比较两个数据集:用return list
我得到输出r(both)
、r(oneonly)
和r(twoonly)
。现在,我想使用输出r(oneonly)
和r(twoonly)
循环到drop
,r(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'
然后您需要用data2
来merge
:语法将取决于哪个变量充当标识符。注意merge
的keepusing()
选项。
我看不出这里需要循环。