0
votes

I will explain my problem with a simple example: suppose a variable called "var" with the following data: yes, no, may be. Each one as string. I need to do something like this:

foreach i of 0/2{
label define lbl 'i' var['i']
}

(I know there a syntax err, but it's just an example)

The thing is that I want to assign to each numeric value of the label a data from de string variable var and has to start from 0 (already tried with encode command, but haven't been able to change de numeric values using a function like foreach, for, etc). I need to do this because I have a lot of different data inside a variable and can't do it one by one and refuse to believe that I can't do it with stata instead of a text editor. I would really appreciate your help. Thanks!

1

1 Answers

4
votes

Perhaps using the encode command with your data will accomplish what you need.

. list, clean

       strvar  
  1.      yes  
  2.       no  
  3.    maybe  
  4.       no  
  5.      yes  

. encode strvar, generate(numvar) label(l_numvar)

. label list l_numvar
l_numvar:
           1 maybe
           2 no
           3 yes

. list, clean nolabel

       strvar   numvar  
  1.      yes        3  
  2.       no        2  
  3.    maybe        1  
  4.       no        2  
  5.      yes        3  

. list, clean

       strvar   numvar  
  1.      yes      yes  
  2.       no       no  
  3.    maybe    maybe  
  4.       no       no  
  5.      yes      yes  

.