Stata 6: Cosa devo fare se il comando di cui ho bisogno non può essere usato con by?
Title | Stata 6: Usare i cicli while quando il comando by non è un’opzione | |
Autore | Jeremy B. Wernow, StataCorp |
Ci sono diversi comandi in Stata che non consentono il comando by come opzione. Due esempi sono il comando tab1 e i comandi graph con l’opzione saving (). Un modo per aggirare questa funzione è mettere il comando che si desidera eseguire in un ciclo while:
Che non funziona. Sappiamo, tuttavia, che rep78 ha valori compresi tra 1 e 5, quindi proviamo un ciclo while in un file do:
local i = 1 while `i' <=5 { tab1 mpg price if rep78 == `i' local i = `i' + 1 }
Ecco l’output dall’esecuzione di questo file:
Cosa succede se rep78 ha valori mancanti? In questo caso, è possibile utilizzare il comando egen per creare una nuova variabile che categorizza ogni valore in rep78.
Ecco il file do modificato:
local i = 1 egen y = group(rep78), missing while `i' <=6 { tab1 mpg price if y == `i' local i = `i' + 1 }
Utilizzando l’opzione mancante con il comando egen, i valori mancanti di rep78 saranno codificati con un valore di 6 (ricordando che rep78 ha valori da 1 a 5). Si noti che l’output di questo file do ora conterrà tabulazioni per mpg e prezzo anche per i valori mancanti di rep78.
Passiamo ora a un esempio più difficile. Un utente ha recentemente voluto utilizzare il comando by con il comando graph e l’opzione saving ().
by non può essere utilizzato con l’opzione graph, saving() a causa di problemi di denominazione (come nomineresti ogni singolo grafico?). Questo può essere risolto con un altro file do:
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 }
L’output di questo file do è
che ha funzionato proprio come volevamo.
C’è molto che puoi fare con questo concetto. Come esempio finale e ancora più complesso, lo stesso utente ha anche detto che voleva usare l’opzione by() con l’opzione saving (), graficamente quelli contro un’altra variabile, e aveva bisogno di questo fatto per un elenco di variabili. Questo probabilmente suona confuso all’inizio (ed è stato). Essenzialmente, avevamo bisogno di
da var1: graph var2 var3, saving(graph) by(var4)
Diverse variabili dovevano essere usate al posto di var3.
La soluzione è usare un comando for all’interno di un ciclo while. Ecco un esempio utilizzando il set di dati automatico:
Questo si traduce in