我想在Stata 12的do-file中运行keep
命令:
keep a1 a2 a3 a4 a5 b1 b2 b3 b4 b5 c1 c2 c3 c4
我想要的是做以下事情:
keep {a1 a2 a3 a4 a5
b1 b2 b3 b4 b5
c1 c2 c3 c4}
我知道{}括号不能解决问题,但我正在寻找执行它的命令。使用#delimiter ;
也不起作用。
我想这样做是因为变量的子组之间有一个关系(我打算通过使用a
,b
和c
在上面发出信号)我想拥有它清楚我的代码。我永久地添加和删除变量。请注意,我不想使用drop
命令(在这种情况下解决方案很简单)。
答案 0 :(得分:19)
有几种方法。一个是使用///
。一个例子:
clear all
set more off
*----- example data -----
set obs 1
forvalues i = 1/25 {
gen var`i' = `i'
}
describe
*----- what you want -----
keep var1 var2 ///
var3-var7 ///
var8 var11
describe
如果使用正确, #delimit
将正常工作。一个例子:
<snip>
*----- what you want -----
#delimit ;
keep var1 var2
var3-var7
var8 var11 ;
#delimit cr
describe
还有另一种方式。 help delimit
(您已经知道)声明:
有关详细信息,请参阅do文件中的 [U] 16.1.3 长行。
该手动输入直接指向相关信息。
我怀疑在这种情况下缺乏研究/努力。谷歌搜索(在“执行文件中使用stata + break line”)可以很容易地将你带到那里。在尝试解决Stata中的问题时,我不建议这是您的第一个策略。相反,从Stata资源开始:我建议阅读
[U] 3 学习和使用Stata的资源
[U] 4 Stata的帮助和搜索工具。
答案 1 :(得分:2)
这只是罗伯托补充真实解决方案的一个非常简单的技巧。由于你有这么多变量,我发现有时候有用的一件事就是使用宏来对变量进行分组,特别是如果你可以在不止一次的情况下使用分组。
loca a a1 a2 a3 a4 a5
loca b b1 b2 b3 b4 b5
loca c c1 c2 c3 c4 c5
keep `a' `b' `c'