2011-03-13 15 views
5

Alcuni set di dati vengono forniti con etichette di valore in lettere minuscole e alla fine vengono visualizzati grafici e tabelle che mostrano i risultati per "Egitto", "Giordania" e "Arabia Saudita" anziché i nomi dei paesi in maiuscolo.Capitalizzazione delle etichette dei valori in Stata

Immagino che la funzione di stringa proper() possa fare qualcosa per me, ma non sto trovando il modo giusto di scrivere il codice per Stata 11 che capitalizzerà tutte le etichette di valore per una determinata variabile.

Fondamentalmente è necessario eseguire la funzione proper() su tutte le etichette dei valori sulla variabile e quindi assegnarle alla variabile. È possibile utilizzare un ciclo e macro foreach in Stata?

risposta

6

Sì. Prima creiamo alcuni dati di esempio con etichette per le prove:

clear 
drawnorm x, n(10) 
gen byte v = int(4+x) 
drop x 
label define types 0 "zero" 1 "one" 2 "two" 3 "three" 4 "four" 5 "five" 6 "six" 
label list types 
label values v types 

Ecco una macro di capitalizzare i valori associati con la variabile "v":

local varname v 
local sLabelName: value label `varname' 
di "`sLabelName'" 

levelsof `varname', local(xValues) 
foreach x of local xValues { 
    local sLabel: label (`varname') `x', strict 
    local sLabelNew =proper("`sLabel'") 
    noi di "`x': `sLabel' ==> `sLabelNew'" 
    label define `sLabelName' `x' "`sLabelNew'", modify 
} 

Dopo l'esecuzione, controllare i risultati:

label list types 
+0

Eccellente, grazie! –

Problemi correlati