在Stata命令中输入变量子集

时间:2015-05-27 00:33:16

标签: stata

我想在Stata命令中输入变量组,但无法找到方法。

E.g。在一个因子分析中,有一组41个变量,我想排除第5个,第33个和第35个,但包括其余的。

应该是:factor x1-x4, x6-x32, x34, x36-41, factors(5) pcf

1 个答案:

答案 0 :(得分:1)

您的示例调用了因子分析。让我们继续吧。如果您的变量确实至少是x1x41之外的那些变量,那么

 factor x1-x4 x6-x32 x34 x36-x41 

可能是合法的。请注意:(1)逗号包括在内; (2)最后的 varlist 已得到纠正,因为x36-41永远不会是合法的 varlist (因为41永远不会是合法的 VARNAME ); (3)当两个或多个变量名用连字符连接时,x6-x32x36-x41,这样的 varlist 表示当前数据集顺序中的变量块,不一定所有名称以x开头且带有隐含后缀的变量,例如在36(1)41。因此,x36-x41可能意味着x36 frog toad x41,如果您的变量具有该顺序的名称。

道德很简单:让您的变量处于一种顺序,使管理和分析变得简单易行。 order命令提供了以编程方式更改变量顺序的最简单方法。

从任意 varlist 中按顺序删除变量 j 的更普遍的问题似乎有点人为,但我们走了。假设我们在本地宏中有一个变量名称列表(实际上是任何名称)。 tokenize将它们逐个映射到编号为1的本地宏,之后我们可以删除任何我们喜欢的内容。在下面的示例中,编辑mac li的输出以删除与此示例无关的内容,这可能非常多。

. local varlist foo bar bazz frog toad newt whatever

. tokenize `varlist'

. mac li
_7:             whatever
_6:             newt
_5:             toad
_4:             frog
_3:             bazz
_2:             bar
_1:             foo
_varlist:       foo bar bazz frog toad newt whatever

. foreach j in 1 3 5 {
  2. local varlist : list varlist - `j'
  }

. mac li
_varlist:       bar frog newt whatever
_7:             whatever
_6:             newt
_5:             toad
_4:             frog
_3:             bazz
_2:             bar
_1:             foo

有关操纵列表的其他方法,请参阅help macrolists