1 articolo è stato aggiunto al tuo carrello.

Nota: Questa FAQ è per gli utenti di Stata 6. Non è rilevante per le versioni più recenti.

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

Lascia un commento

Il tuo indirizzo email non sarà pubblicato.