Stata 6: O que faço se o comando de que preciso não puder ser usado por?
Título | Stata 6: Usando loops while quando o comando não é uma opção | |
Autor | Jeremy B. Wernow, StataCorp |
Existem vários comandos no Stata que não permitirão o comando by como uma opção. Dois exemplos são o comando tab1 e os comandos do grafo com a opção Gravar (). Uma maneira de contornar esta funcionalidade é colocar o comando que deseja executar num ciclo while:
Que não funciona. Sabemos, no entanto, que rep78 tem valores entre 1 e 5, então vamos tentar um loop while em um arquivo:
local i = 1 while `i' <=5 { tab1 mpg price if rep78 == `i' local i = `i' + 1 }
Aqui está a saída da execução deste ficheiro:
o Que se rep78 tem valores em falta? Neste caso, você pode usar o comando egen para criar uma nova variável que categoriza cada valor em rep78.
Aqui está o ficheiro do modificado:
local i = 1 egen y = group(rep78), missing while `i' <=6 { tab1 mpg price if y == `i' local i = `i' + 1 }
Usando a opção em falta com o comando egen, os valores em falta do rep78 serão codificados com um valor de 6 (lembrando que o rep78 tem valores de 1 a 5). Note que o resultado deste Do-file irá agora conter tabulações para mpg e preço para os valores em falta do rep78 também.agora vamos passar para um exemplo mais difícil. Um utilizador queria recentemente usar o comando by com o comando graph e a opção saving ().
by Não pode ser usado com a opção grafo, saving() por causa de questões de nome (como você nomearia cada grafo individual?). Isto pode ser resolvido com outro do-file:
local i = 1 egen y = group(rep78), missing while `i' <=6 { graph mpg price if y == `i', saving(graph`i',replace) local i = `i' + 1 }
a saída deste Do-file é
que funcionou como queríamos.
Há muito que você pode fazer com este conceito. Como um exemplo final e ainda mais complexo, o mesmo usuário também disse que queria usar a opção by() com a opção saving (), graphing aqueles contra outra variável, e ele precisava que isso fosse feito para uma lista de variáveis. Isto provavelmente parece confuso no início (e foi). Essentially, we needed to
by var1: graph var2 var3, saving(graph) by (var4)
Several different variables were to be used in place of var3.
a solução é usar um for command dentro de um laço while. Aqui está um exemplo usando o conjunto de Dados auto:
isto resulta em