在Stata的do-file中将命令分成几行

时间:2014-08-14 02:48:38

标签: command-line stata break

我想在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 ;也不起作用。

我想这样做是因为变量的子组之间有一个关系(我打算通过使用abc在上面发出信号)我想拥有它清楚我的代码。我永久地添加和删除变量。请注意,我不想使用drop命令(在这种情况下解决方案很简单)。

2 个答案:

答案 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'