在多个变量块上使用Stata&keep命令

时间:2014-11-06 14:47:52

标签: stata

我刚开始研究一个包含500万个观测数据和大量变量的大型数据集。为了更快地处理这个问题,我想只选择一些感兴趣的变量并删除其余的变量。

使用keep,我可以选择一个变量块,非常简单:

keep varx1-x5 

但是,我想要的变量在数据集中没有按顺序排列:

varx1 varx2 varx3 varz1 varz2 vary1 vary2 vary3

我不想要varz个变量。我只想要varxvary的块。

因此。我不是很擅长循环,但我试过这个:

foreach varname of varlist varx1-varx3 vary1-vary3  {
keep `varname'
}

这不起作用,因为它keep只有varx1,然后尝试keep其他人,并且错误因为他们刚刚drop ped。

如何告诉keep选择多个变量块?

2 个答案:

答案 0 :(得分:2)

尝试keep,而不是使用drop来消除未赋予命令的变量,而只删除您指定的变量。循环不是必需的。一个例子:

clear 
set obs 0

*----- example vars -----

gen varx1 = .
gen varx2 = .
gen varx3 = .
gen varz1 = .
gen varz2 = .
gen vary1 = .
gen vary2 = .
gen vary3 = .

*----- what you want -----

drop varz*

这两个命令是联合记录的,因此help keephelp drop会让你在那里。

答案 1 :(得分:1)

如果您不知道要删除的所有变量,则只保留包含varxvary的块:

keep varx* varz*

*表示前面表达式的“匹配零或更多”。