在Stata

时间:2015-06-10 10:20:12

标签: list stata

我有三个变量varA,varB和varC 我试图先取代"失踪"在所有三个变量中使用NA,然后为所有三个变量添加标签。

首先我替换了#34;缺少"与NA:

local mylist1 varA-varC
foreach v1 of varlist `mylist1'  { 
   replace `v1'="NA" if `v1' =="missing"
}

现在,如果我想再次调用列表,将相同的标签添加到所有三个变量中:

foreach v1 of varlist `mylist1' {
   label var `v1' "testvaraible"
}

但我会收到一条错误消息:

varlist required

有人可以解释为什么我无法回想起这份名单吗?

2 个答案:

答案 0 :(得分:1)

对于你的第一个例子,如果所涉及的变量都是字符串,那么这将是合法的语法:

local mylist1 varA-varC
foreach v of varlist `mylist1'  { 
    replace `v' = "NA" if `v' == "missing"
}

注意引用本地宏(不同的左右引号)的不同标点符号以及放置大括号的区别。

在第二个例子中甚至很难计算出你想要的东西,但是循环超过了你在循环中从不引用的本地宏v的不同值。此外,根据未指定的局部宏testvaraible [原文如此]的定义,仍然令人费解的是为什么要相同地标记三个变量。

如果没有回答这个问题,您可能需要更加明确地了解您的数据以及您想要的确切内容。特别是,我们无法查看本地宏v1testvaraible的定义。

答案 1 :(得分:1)

在针对前一个答案的讨论做出的编辑后,我参加了这个讨论。此时,复制代码现在位于原始帖子中,问题显然已得到纠正。讨厌发布这个作为答案,但是评论显然太长了。

. set obs 1
obs was 0, now 1

. generate str8 varA = "a"

. generate str8 varB = "missing"

. generate str8 varC = "c"

. local mylist1 varA-varC

. foreach v1 of varlist `mylist1'  { 
  2.    replace `v1'="NA" if `v1' =="missing"
  3. }
(0 real changes made)
(1 real change made)
(0 real changes made)

. foreach v1 of varlist `mylist1' {
  2.    label var `v1' "testvariable"
  3. }

. list, clean noobs

    varA   varB   varC  
       a     NA      c  

. describe

Contains data
  obs:             1                          
 vars:             3                          
 size:            24                          
------------------------------------------------------------------------------------------------
              storage   display    value
variable name   type    format     label      variable label
------------------------------------------------------------------------------------------------
varA            str8    %9s                   testvariable
varB            str8    %9s                   testvariable
varC            str8    %9s                   testvariable
------------------------------------------------------------------------------------------------
Sorted by:  
     Note:  dataset has changed since last saved

.