2011-03-13 11 views
5

Algunos conjuntos de datos vienen con etiquetas de valores minúsculas completas, y termino con gráficos y tablas que muestran los resultados de "egipto", "jordania" y "Arabia Saudita" en lugar de los nombres de países en mayúsculas.Capitalizando etiquetas de valor en Stata

Supongo que la función de cadena proper() puede hacer algo por mí, pero no estoy encontrando la manera correcta de escribir el código para Stata 11 que capitalizará todas las etiquetas de valor para una variable determinada.

Básicamente necesito ejecutar la función proper() en todas las etiquetas de valores de la variable y luego asignarlas a la variable. ¿Es posible usar un lazo foreach y macros en Stata?

Respuesta

6

Sí. En primer lugar vamos a crear algunos datos de ejemplo con etiquetas para las pruebas:

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 

Aquí es una macro para capitalizar los valores asociados a la variable "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 
} 

Después de ejecutarlo, comprobar los resultados:

label list types 
+0

Excelente, gracias! –

Cuestiones relacionadas