我刚开始研究一个包含500万个观测数据和大量变量的大型数据集。为了更快地处理这个问题,我想只选择一些感兴趣的变量并删除其余的变量。
使用keep
,我可以选择一个变量块,非常简单:
keep varx1-x5
但是,我想要的变量在数据集中没有按顺序排列:
varx1 varx2 varx3 varz1 varz2 vary1 vary2 vary3
我不想要varz
个变量。我只想要varx
和vary
的块。
因此。我不是很擅长循环,但我试过这个:
foreach varname of varlist varx1-varx3 vary1-vary3 {
keep `varname'
}
这不起作用,因为它keep
只有varx1
,然后尝试keep
其他人,并且错误因为他们刚刚drop
ped。
如何告诉keep
选择多个变量块?
答案 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 keep
或help drop
会让你在那里。
答案 1 :(得分:1)
如果您不知道要删除的所有变量,则只保留包含varx
和vary
的块:
keep varx* varz*
*
表示前面表达式的“匹配零或更多”。