Documentos de Académico
Documentos de Profesional
Documentos de Cultura
P2S Creaciondevariables
P2S Creaciondevariables
net/publication/310605749
CITATIONS READS
0 36,944
3 authors, including:
All content following this page was uploaded by Jaume Vives on 23 November 2016.
Procedimiento 2:
Creación de variables
© 2016, Josep Maria Losilla Vidal, Jaume Vives Brosa, y Eva Penelo
Universitat Autònoma de Barcelona
Procedimiento 2 (P2S): Creación de variables
Introducción ............................................................................................................................................. 2
P2S.1 Recodificación de variables ........................................................................................................... 3
P2S.2 Cálculos con expresiones aritméticas y estadísticas ...................................................................... 5
P2S.3 Cálculos con fechas y horas ........................................................................................................... 8
P2S.4 Uso de expresiones lógicas .......................................................................................................... 10
P2S.5 Recuento de eventos .................................................................................................................... 16
P2S.6 Grabación del fichero de datos y de sintaxis ................................................................................ 18
Ejercicio ................................................................................................................................................. 19
Solución del ejercicio ............................................................................................................................. 21
Matriz de datos HABITOX_P2S_final.dta: Aspecto del contenido del editor de datos ................... 21
Matriz de datos HABITOX_P2S_final.dta: Variables Manager ...................................................... 22
Archivo de sintaxis HABITOX_P2S.do ........................................................................................... 23
Introducción
Habitualmente, antes de iniciar el proceso de análisis estadístico es necesario crear nuevas variables a
partir de las existentes en la matriz de datos. La creación de estas nuevas variables puede implicar desde
cálculos sencillos de diferencia entre dos fechas para obtener un tiempo transcurrido (como, por ejemplo,
la edad en años cumplidos a partir de la fecha de nacimiento y la fecha de respuesta a un cuestionario),
hasta complejas operaciones aritméticas o lógicas a partir de un gran número de variables originales (por
ejemplo, para definir un diagnóstico DSM o CIE a partir de un conjunto de síntomas e indicadores).
Stata incluye potentes herramientas para la creación de nuevas variables en su menú Data. Como
veremos, en la mayor parte de casos estas operaciones se podrán realizar mediante cuadros de diálogo que
evitan tener que aprender la sintaxis de las instrucciones Stata. En otros casos aprender dicha sintaxis será
inevitable para asegurar que la creación de la nueva variable se realiza correctamente, teniendo en cuenta
contingencias como la presencia de valores faltantes (missing).
Pàgina 2 de 24 © 2016 - Josep Maria Losilla Vidal, Jaume Vives Brosa y Eva Penelo (UAB)
P2S.1 Recodificación de variables
Una de las operaciones habituales de transformación de datos consiste en cambiar la escala de una
variable cuantitativa continua o discreta para crear una nueva variable categórica ordinal, o bien asignar
códigos numéricos a los valores de una variable alfanumérica (de tipo cadena o str).
La orden recode del menú Data | Create or change data | Other variable-transformation commands |
Recode categorical variable permite cambiar los códigos asignados a una variable. Esta operación puede
resultar útil para agrupar en un único valor distintos valores de la variable original.
Vamos a crear la nueva variable nivel de consumo de tabaco (variable Fumador) a partir del número de
cigarrillos que los sujetos fuman en promedio cada día (Numcig). Para ello establecemos previamente los
siguientes criterios:
NUMCIG FUMADOR
Valor Valor Etiqueta
0 0 No fumador
1a4 1 Menos de 5 cigarrillos/día
5a9 2 Menos de 10 cigarrillos/día
Mayor o igual a 10 3 10 o más cigarrillos/día
1. Abre Stata e importa el fichero de datos HABITOX_P2S_inicial.dta ejecutando el menú File | Open,
o bien, haz doble clic sobre este fichero en el explorador de Windows (esta acción abre Stata y el
fichero de datos de forma automática).
2. Ejecuta a continuación el menú Data | Create or change data | Other variable-transformation
commands | Recode categorical variable.
© 2016 - Josep Maria Losilla Vidal, Jaume Vives Brosa y Eva Penelo (UAB) Pàgina 3 de 24
3. En el cuadro de diálogo de Recode, para asegurarte que creas una nueva variable, ves en primer
lugar a la pestaña Options y en la opción Generate new variable escribe el nombre de la nueva
variable: Fumador. Y en la opción Specify a name for the value label definded by the
transformation rules, escribe el nombre del diccionario que se aplicará automáticamente:
dFumador. Al indicar el nombre del diccionario dFumador, Stata lo creará automáticamente a partir
de los valores y etiquetas que definiremos a continuación en la pestaña Main.
Pàgina 4 de 24 © 2016 - Josep Maria Losilla Vidal, Jaume Vives Brosa y Eva Penelo (UAB)
la nueva variable Fumador el valor 3 a los casos que contengan un valor desde 10 hasta el valor
máximo que pueda tomar la variable Numcig en la matriz de datos.
¡Atención! Para asegurarse que las reglas de recodificación son exhaustivas, puede usarse como
última regla de recodificación la siguiente expresión:
else=.
Esta expresión asigna el valor faltante vacío a todos los valores no contenidos en las reglas
precedentes. De lo contrario, y dado que la orden recode se inicia con los valores originales, si las
reglas de recodificación no incluyen todos los valores existentes en la matriz de datos, se
conservaría el valor antiguo como nuevo valor.
9. Ya hemos finalizado el proceso de asignación de valores a la nueva variable. Ahora ya sólo resta
pulsar OK, que automáticamente añade la orden recode a la ventana Review de la ventana principal
y la ejecuta mostrando los resultados en la ventana Results de la ventana principal. Al finalizar la
sesión podremos guardar el contenido de la ventana Review con la ventaja que en cualquier
momento podremos abrir el fichero de sintaxis guardado y volver a ejecutar las instrucciones que se
desee sin tener que volver a completar los cuadros de diálogo correspondientes.
10. A continuación, cambia la etiqueta [RECODE of Numcig (Nº de cigarrillos/día)] que Stata asigna
por defecto a la nueva variable Fumador, mediante la ventana Variables Manager. Para ello,
ejecuta el menú Data | Variables Manager, selecciona la nueva variable Fumador y modifica el
Label escribiendo Grado de adicción al tabaco. Finalmente, pulsa Apply para guardar los cambios.
11. Finalmente, cambia el tipo a byte.
12. Comprueba que la nueva variable Fumador aparece como última columna en la ventana Data Editor
(Browse). Verifica también en algunos casos que la nueva variable contiene efectivamente los
códigos correctos en función de los valores de la variable Numcig.
© 2016 - Josep Maria Losilla Vidal, Jaume Vives Brosa y Eva Penelo (UAB) Pàgina 5 de 24
original. El menú Data | Create or change data de Stata permite realizar esta operación mediante tres
órdenes: generate, replace y egen.
Pàgina 6 de 24 © 2016 - Josep Maria Losilla Vidal, Jaume Vives Brosa y Eva Penelo (UAB)
condición indicada. Para indicar la ausencia de valores faltantes se escribe la condición que la/s
variables/s sean distintas al valor faltante (.); por ejemplo:
Numcig != .
Para ejemplificar el uso de la orden generate de Stata, vamos a crear la variable IMC (índice de masa
corporal) como resultado de dividir el Peso en kilogramos de los participantes por su Talla en metros al
cuadrado:
1. Ejecuta el menú Data | Create or change data | Create new variable.
2. En el cuadro de diálogo hay que escribir IMC en el recuadro Variable name y, a continuación,
seleccionar la opción Specify a value or an expression y pulsar Create... para abrir el generador de
expresiones (Expression Builder).
3. Para introducir la expresión de cálculo en el recuadro de texto, despliega la lista de variables. Hay que
tener en cuenta que la Talla está registrada en centímetros, por lo que hay que pasarla a metros
dividiendo su valor por 100. Para ir introduciendo los nombres de las variables que intervienen en la
expresión, hay que ir haciendo doble clic en la lista de Variables que se encuentra dentro de
Categories. También es posible escribir directamente con el teclado en el recuadro de texto.
La siguiente figura muestra el resultado final de la expresión, en el cual se puede observar también la
importancia del uso de paréntesis para que Stata realice correctamente la operación de cálculo; en este
caso el paréntesis ( Talla / 100 ) es necesario y el paréntesis exterior ( ( Talla / 100 ) ^ 2 ) no lo es
pero permitiría indicar más claramente la expresión:
Nótese que en Variable type dejamos el valor float por tratarse de una variable con decimales.
4. Pulsa el botón OK del cuadro de diálogo Expression Builder y, a continuación, pulsa de nuevo OK
en el cuadro de diálogo generate. En la ventana principal aparece la orden generate, tanto en la
ventana Review como en la de Results. Etiqueta la nueva variable IMC desde el menú Variables
Manager o bien desde la ventana Properties.
© 2016 - Josep Maria Losilla Vidal, Jaume Vives Brosa y Eva Penelo (UAB) Pàgina 7 de 24
5. Finalmente, comprueba que la nueva variable IMC aparece como última columna en la ventana Data
Editor (Browse). Verifica también en algunos casos que la nueva variable contiene efectivamente el
índice de masa corporal, con valores que oscilaran alrededor de los 20 puntos en los casos con una
adecuada relación entre el peso y la talla, y con valores superiores a 25 en los casos con un peso
superior al que correspondería a su talla. Observa que, si las variables Peso y/o Talla presentaban
datos faltantes, la nueva variable IMC aparece como valor faltante (.), dado que la orden generate
sólo se ejecuta para los casos con información completa.
Pàgina 8 de 24 © 2016 - Josep Maria Losilla Vidal, Jaume Vives Brosa y Eva Penelo (UAB)
Para practicar, vamos a crear la variable Edad calculando el tiempo transcurrido en años entre la fecha de
respuesta al cuestionario Fresp y la fecha de nacimiento Fnac. Deberás restar ambas fechas y dividir entre
365.25 para pasar los días a años transcurridos:
1. Ejecuta el menú Data | Create or change data | Create new variable.
2. En el cuadro de diálogo hay que escribir Edad en el recuadro Variable name y, a continuación,
seleccionar la opción Specify a value or an expression y pulsar Create... para abrir el generador de
expresiones y desplegar la lista de variables.
3. Para escribir la expresión en el cuadro Expression Builder pulsa el doble paréntesis, inserta la
diferencia entre las variables Fresp (fecha de respuesta al cuestionario) y Fnac (fecha de nacimiento)
y después divide dicho paréntesis entre 365.25. Pulsa el botón OK.
4. Pulsa el botón OK del cuadro de diálogo Expression Builder y, a continuación, pulsa de nuevo OK
en el cuadro de diálogo generate. En la ventana principal aparece la orden generate, tanto en la
ventana Review como en la de Results.
5. A continuación, abre la ventana Variables Manager para indicar la etiqueta Edad de respuesta al
cuestionario de la nueva variable Edad. Puedes realizar la misma acción desde la ventana
Properties.
6. Finalmente, comprueba que la nueva variable Edad aparece como última columna en la ventana Data
Editor (Browse). Verifica también en algunos casos que la nueva variable contiene efectivamente la
edad en años como tiempo transcurrido entre su fecha de respuesta y su fecha de nacimiento.
© 2016 - Josep Maria Losilla Vidal, Jaume Vives Brosa y Eva Penelo (UAB) Pàgina 9 de 24
P2S.4 Uso de expresiones lógicas
Otro tipo de variable calculada que habitualmente es necesario definir es aquella cuyo resultado no se
obtiene a partir de un cálculo aritmético o estadístico, sino de una expresión lógica. Este tipo de variables
también se pueden crear en Stata con la orden generate.
Un ejemplo típico de este tipo de variable calculada lo constituyen los diagnósticos (como, por ejemplo,
la hipertensión o la obesidad según los criterios de la OMS, el trastorno bipolar según el DSM-IV, etc.) o,
desde un punto de vista más general, los sistemas de clasificación.
Pàgina 10 de 24 © 2016 - Josep Maria Losilla Vidal, Jaume Vives Brosa y Eva Penelo (UAB)
missing | cierto, o bien, cierto | missing devuelve cierto.
missing | falso, o bien, falso | missing devuelve missing.
Antecedentes Consecuente
V1 V2 V3
valor3 1 Categoría 1
valor1 valor4 2 Categoría 2
missing missing
valor5 1 Categoría 1
valor2 valor6 2 Categoría 2
missing missing
valor7 1 Categoría 1
missing valor8 2 Categoría 2
missing missing
Siendo valorN un valor, una lista o rango de valores, o bien, una expresión numérica.
Como se puede observar, se trata de un diagrama en árbol en forma de tabla que permite indicar los
valores (o expresiones) de cada variable (antecedente) que definen cada posible valor de la nueva
variable (consecuente).
Es importante incluir siempre en esta tabla de análisis la posibilidad de que tanto los antecedentes como
el consecuente puedan contener valores faltantes (missing).
Para transformar esta tabla de análisis en la expresión lógica que crea el sistema de clasificación sólo
hay que aplicar la siguiente regla:
Los valores que se encuentran en una misma fila (o rama) se concatenan con el nexo lógico & (Y).
Las filas (o ramas) que definen un mismo valor en el consecuente (variable que contendrá la
clasificación) se concatenan con el nexo lógico | (O).
Así, para la tabla de análisis de antecedentes y consecuente genérica presentada antes, las expresiones
lógicas necesarias para crear la nueva variable de clasificación serían:
© 2016 - Josep Maria Losilla Vidal, Jaume Vives Brosa y Eva Penelo (UAB) Pàgina 11 de 24
valor <= missing verdadero
valor > missing falso
valor >= missing falso
valor == missing falso
Por ello, en Stata es imprescindible contemplar en la sintaxis de las expresiones lógicas la posible
existencia de valores faltantes para asegurar su correcto tratamiento. Para ello se pueden utilizar
diferentes estrategias, tal y como se verá en los siguientes ejemplos y ejercicios.
Vamos a crear una nueva variable Fuma que indique únicamente si la persona fuma o no fuma
(consecuente: nueva variable Fuma) a partir del consumo de cigarrillos (antecedente: variable existente
Numcig).
1. Ejecuta el menú Data | Create or change data | Create new variable.
2. En el cuadro de diálogo cambia en primer lugar el Variable type por Byte. A continuación, escribe
Fuma en el recuadro Variable name, selecciona la opción Specify a value or an expression y pulsa
Create... para abrir el generador de expresiones y desplegar la lista de variables.
3. En el cuadro Expression Builder, escribe la expresión lógica que devuelva el valor verdadero (1)
cuando el consumo de cigarrillos sea mayor a 0 y el valor falso (0) cuando dicho consumo sea 0:
Numcig > 0
Sería equivalente usar la expresión Numcig >= 1. A continuación, pulsa el botón OK.
4. Dado que la variable Numcig contiene valores faltantes en algunos casos, en la pestaña if/in
especifica que la expresión lógica sólo se evalúe cuando dicha variable no esté vacía, es decir,
cuando Numcig != . y pulsa OK.
Pàgina 12 de 24 © 2016 - Josep Maria Losilla Vidal, Jaume Vives Brosa y Eva Penelo (UAB)
5. A continuación, abre la ventana Variables Manager para indicar la etiqueta Hábito de fumar de la
nueva variable Fuma. Comprueba también que el tipo es byte y crea el diccionario dSiNo y aplícalo a
la variable Fuma. También puedes cambiar la etiqueta, el tipo y el diccionario desde la ventana
Properties.
6. Finalmente, comprueba que la nueva variable Fuma aparece como última columna en la ventana
Data Editor (Browse). Verifica también en algunos casos que la nueva variable contiene
efectivamente la condición de fumador o no a partir del consumo de cigarrillos diarios informados.
Vamos a crear ahora una nueva variable que contenga el diagnóstico de obesidad a partir de la siguiente
tabla de antecedentes (Genero e IMC) y consecuente (Obesidad), según la Sociedad Española para los
Estudios de la Obesidad (SEEDO):
Antecedentes Consecuente
GENERO IMC OBESIDAD
Valor Valor Valor Etiqueta
< 25 1 Normopeso
>= 25 i < 30 2 Sobrepeso
0 (masculino)
>= 30 3 Obesidad
Missing missing
< 24 1 Normopeso
>= 24 i < 29 2 Sobrepeso
1 (femenino)
>= 29 3 Obesidad
Missing missing
< 24 1 Normopeso
Missing >= 25 i <29 2 Sobrepeso
>= 30 3 Obesidad
© 2016 - Josep Maria Losilla Vidal, Jaume Vives Brosa y Eva Penelo (UAB) Pàgina 13 de 24
( >= 24 Y < 25 ) O
( >= 29 Y < 30 ) O missing
missing
3. A continuación, realizaremos una orden replace para cada uno de los valores de Obesidad que
deseamos categorizar, cada uno de ellos con su correspondiente expresión lógica compleja. Para ello,
ejecuta el menú Data | Create or change data | Change contents of variable.
4. Selecciona la variable Obesidad en la lista de variables y especifica que se asigne el valor 1 (peso
normal o normopeso).
5. En la pestaña if/in, especifica la expresión lógica para que dicha orden sólo se aplique a los casos que
cumplan los criterios de normopeso. Para evitar errores, es recomendable utilizar los paréntesis para
encerrar cada una de las sub-expresiones lógicas correspondientes a cada una de las filas de la tabla
de análisis de antecedentes y consecuentes. De acuerdo con lo indicado en la tabla de antecedentes y
consecuentes la expresión lógica seria:
(Genero == 0 & IMC < 25) | (Genero == 1 & IMC < 24) | (Genero == . & IMC < 24)
Sin embargo, se puede obviar la expresión Genero==. del último paréntesis:
(Genero==0 & IMC <25) | (Genero==1 & IMC<24) | (IMC<24)
Pàgina 14 de 24 © 2016 - Josep Maria Losilla Vidal, Jaume Vives Brosa y Eva Penelo (UAB)
6. Pulsa el botón OK para ejecutar esta primera orden replace, que cambiará el valor faltante por 1
(normopeso) en los casos que cumplan dicha condición.
7. A continuación, hay que repetir los pasos anteriores para definir las categorías 2 y 3 de la nueva
variable Obesidad. Hay que tener en cuenta que cuando se define una condición de IMC mayor a un
valor determinado, hay que acotarla para que no incluya los valores faltantes, añadiendo otra
condición que sea IMC !=.:
(Genero == 0 & IMC >= 25 & IMC < 30) | (Genero == 1 & IMC >= 24 & IMC < 29) |
(IMC >= 25 & IMC < 29) OBESIDAD=2
(Genero == 0 & IMC >= 30 & IMC <.) | (Genero == 1 & IMC >= 29 & IMC <.) | (IMC >=
30 & IMC !=.) OBESIDAD=3
8. A continuación, abre la ventana Variables Manager para indicar la etiqueta Obesidad (diagnóstico)
de la nueva variable Obesidad. Crea también el diccionario dObesidad y aplícalo a la variable
Obesidad:
En síntesis, cuando se ejecuta este bloque de instrucciones, la primera orden generate crea la nueva
variable Obesidad con todos los casos vacíos (.). A continuación, la primera orden replace utiliza la
variable Obesidad ya creada y substituye el valor vacío por el valor 1 en los casos que cumplan su
condición lógica; la segunda orden replace asigna el valor 2 a los casos que cumplen su condición
lógica, pudiendo modificar los valores existentes del resto de casos reemplazados en la orden anterior
si la expresión se cumpliera (por ejemplo porque no se ha definido correctamente); finalmente, la
© 2016 - Josep Maria Losilla Vidal, Jaume Vives Brosa y Eva Penelo (UAB) Pàgina 15 de 24
tercera orden replace es la que asigna el valor 3 a los casos que cumplen su condición lógica,
pudiendo modificar también el valor existente en los casos restantes.
9. Para acabar, hay que comprobar que la nueva variable Obesidad aparece como última columna en la
ventana Data Editor (Browse). Verifica también en algunos casos que la nueva variable contiene
efectivamente la categoría correspondiente a la definición de obesidad especificada en el análisis
previo y que hay casos que presentan un valor vacío (.) por no disponer de su IMC.
3. Comprueba que la nueva variable Numdrogas aparece como última columna en la ventana Data
Editor (Browse). Observa también que en los casos en que no se dispone de valor en ninguna de las
tres variables Maria, Alucin y Opio la nueva variable contiene el valor 0 en lugar de vacío (.).
Pàgina 16 de 24 © 2016 - Josep Maria Losilla Vidal, Jaume Vives Brosa y Eva Penelo (UAB)
4. Vamos a controlar ahora la presencia de valores faltantes en las variables de consumo de drogas cuyos
valores estamos recontando, de modo que la nueva variable contenga el valor faltante cuando alguna
de las variables de consumo de drogas no contenga un valor válido. En primer lugar, generaremos la
variable Nmissdrogas como el recuento de los valores perdidos de las tres variables Maria, Alucin y
Opio, con la orden egen y la función rowmiss que encontrarás en Egen Function bajo el nombre
Row number of missing.
5. Una vez creada la variable Nmissdrogas, asignaremos a continuación un valor vacío (.) a la variable
ya existente Numdrogas con la orden replace (menú Data | Create or change data | Change
contents of variable) en aquellos casos con un número de valores faltantes en las variables Maria,
Alucin y Opio mayor a 0. Para ello hay que indicar el punto en New contents de la pestaña Main y la
expresión Nmissdrogas > 0 en if: (expression) de la pestaña if/in:
6. Una vez ejecutada la orden replace anterior, abre la ventana Variables Manager para indicar la
etiqueta de la nueva variable Numdrogas.
© 2016 - Josep Maria Losilla Vidal, Jaume Vives Brosa y Eva Penelo (UAB) Pàgina 17 de 24
7. Finalmente, comprueba en la ventana Data Editor (Browse) que la nueva variable Numdrogas
contiene ahora el valor vacío (.) cuando no se dispone de respuesta a alguna de las variables originales
Maria, Alucin u Opio. Una vez realizada esta comprobación, puedes eliminar la variable Nmissdrogas
seleccionándola en la ventana Variables Manager o en el panel Variables de la ventana principal y
escogiendo la opción Drop selected variables en el menú contextual:
Pàgina 18 de 24 © 2016 - Josep Maria Losilla Vidal, Jaume Vives Brosa y Eva Penelo (UAB)
5. Si durante la sesión ya tenías un archivo *.do abierto, en el paso 3 puedes proceder de la siguiente
forma para añadir la nueva sintaxis al archivo ya existente. Selecciona en la ventana Review las
órdenes de interés y cópialas en el portapapeles (Ctrl+C). Y en el archivo de sintaxis, pega el
contenido del portapapeles (Ctrl+V) y guárdalo.
6. Sal de Stata ejecutando File | Exit.
Ejercicio
Crea las variables que se indican a continuación. En el caso de variables de tipo lógico presta especial
atención al análisis previo (tabla de antecedentes y consecuente) y a la consideración en dicho análisis de
la posible presencia de valores faltantes (missing) –el resultado de las nuevas variables deberá ser missing
cuando no se disponga de información suficiente en las variables antecedentes. Guarda la sintaxis en el
archivo HABITOX_P2S.do.
Nivdroga: debe contener el grado de adicción a las drogas expresado como la suma de los valores de
las tres variables que recogen su frecuencia de consumo siempre que se disponga de la respuesta de
los sujetos en todas ellas.
VINO+CERVE+COPAS BEBEDOR
Valor Valor Etiqueta
0 0 No bebedor
1a7 1 Menos de 8 vasos o copas/semana
8 a 14 2 Menos de 15 vasos o copas/semana
Mayor o igual a 15 3 15 o más vasos o copas/semana
Antes de crear la variable Bebedor1 deberás crear una variable auxiliar llamada Bebedor que
contenga la suma de las tres variables con independencia que haya valores faltantes; puedes usar para
crearla la orden egen y la opción rowtotal marcando la opción Do not treat missing values as 0. A
partir de esta variable auxiliar Bebedor te resultará fácil crear la variable Bebedor1 definida en el
presente ejercicio y también la variable Bebedor2 que se define en el siguiente.
Bebedor2: debe contener la misma clasificación anterior, pero sólo para los sujetos de los cuales se
disponga de respuesta al menos en dos de las tres variables que recogen el consumo de los diferentes
tipos de bebidas alcohólicas. Para ello, debes generar en primer lugar una nueva variable auxiliar
Nvalbebidas con la orden egen y la función rownonmiss (que encontrarás en Egen Function bajo el
nombre Row number of nonmissing) que contenga el recuento de los datos válidos en las variables
antecedentes. A continuación, podrás generar la variable Bebedor2 a partir de la variable auxiliar
Bebedor creada en la pregunta anterior y la nueva variable auxiliar Nvalbebidas.
Alcohol: debe contener el número de tipos distintos de bebidas alcohólicas que toman los sujetos,
siempre que se disponga de respuesta en las tres variables que recogen el consumo de los diferentes
tipos de bebidas alcohólicas. Nota: para indicar un valor muy alto en el consumo de cada tipo distinto
de bebida alcohólica, puedes usar el valor 99.
Habito: debe contener el valor 0 si el sujeto no fuma ni bebe ni toma habitualmente ningún tipo de
droga, o el valor 1 si tiene alguno de estos hábitos. ¡Atención a los valores missing! Si de un sujeto
no se dispone de ningún valor en las variables antecedentes, Habito deberá contener el valor faltante.
Una vez hayas finalizado este ejercicio puedes comparar tus resultados con la solución que se presenta en
la siguiente página y que se encuentran también en el fichero HABITOX_P2S.do.
© 2016 - Josep Maria Losilla Vidal, Jaume Vives Brosa y Eva Penelo (UAB) Pàgina 19 de 24
Ejercicio opcional avanzado
IMC_edad: esta variable denominada "Normopeso según la edad" debe contener el valor 1 si el
sujeto tiene un IMC en el rango de la normalidad, y el valor 0 si se encuentra fuera de dicho rango.
En la siguiente tabla se muestran los valores de referencia de los IMC normales para distintas edades
según algunos autores. Al crear la nueva variable IMC_edad hay que tener en cuenta la posibilidad
que no se conozca el IMC o bien la Edad del sujeto, y también que la Edad del sujeto esté por debajo
del valor mínimo baremado:
EDAD IMC
19-24 19-24
> 24-34 20-25
> 34-44 21-26
> 44-54 22-27
> 54-65 23-28
> 65 24-29
IMC_edad_sexo: esta variable denominada "Normopeso según la edad y el sexo" modifica la
clasificación IMC_edad anterior teniendo en cuenta también el Genero de los sujetos. Debes
considerar que el límite de IMC que determina el diagnóstico de Normopeso en los hombres es el que
se muestra en la tabla anterior, y que el de las mujeres se sitúa un punto por debajo del de los
hombres en cada franja de Edad.
Pàgina 20 de 24 © 2016 - Josep Maria Losilla Vidal, Jaume Vives Brosa y Eva Penelo (UAB)
Solución del ejercicio
Pàgina 22 de 24 © 2016 - Josep Maria Losilla Vidal, Jaume Vives Brosa y Eva Penelo (UAB)
recode Bebedor (0=0 "No bebedor") (1/7=1 "Menos de 8 vasos o copas/semana") (8/14=2 "Menos de 15 vasos o
Archivo de sintaxis HABITOX_P2S.do copas/semana") (15/max=3 "15 o más vasos o copas/semana") (else=.), generate(Bebedor1) label(dBebedor)
label variable Bebedor1 "Nivel de consumo de alcohol semanal"
* Ejemplo de Recodificación: NUMCIG
recode Numcig (0=0 "No fumador") (1/4=1 "Menos de 5 cigarrillos/día") (5/9=2 "Menos de 10 cigarrillos/día") * Ejercicio: variable BEBEDOR2
(10/max=3 "10 o más cigarrillos/día") (else=.), generate(Fumador) label(dFumador) egen float Nvalbebidas = rownonmiss( Vino Cerve Copas )
label variable Fumador "Nivel de consumo de tabaco" recode Bebedor 0=0 1/7=1 8/14=2 15/max=3 else=. if Nvalbebidas >= 2, generate(Bebedor2)
replace IMC_edad_sexo = 0 if Genero == 0 & ! ((Edad >= 19 & Edad <= 24) & (IMC >= 19 & IMC <= 24) | (Edad >
24 & Edad <= 34) & (IMC >= 20 & IMC <= 25) | (Edad > 34 & Edad <= 44) & (IMC >= 21 & IMC <= 26) |
(Edad > 44 & Edad <= 54) & (IMC >= 22 & IMC <= 27) | (Edad > 54 & Edad <= 65) & (IMC >= 23 & IMC <= 28)
| (Edad > 65 & Edad <= .) & (IMC >= 24 & IMC <= 29))
replace IMC_edad_sexo = 1 if Genero == 1 & ((Edad >= 19 & Edad <= 24) & (IMC >= 18 & IMC <= 23) | (Edad >
24 & Edad <= 34) & (IMC >= 19 & IMC <= 24) | (Edad > 34 & Edad <= 44) & (IMC >= 20 & IMC <= 25) |
(Edad > 44 & Edad <= 54) & (IMC >= 21 & IMC <= 26) | (Edad > 54 & Edad <= 65) & (IMC >= 22 & IMC <= 29)
| (Edad > 65 & Edad <= .) & (IMC >= 23 & IMC <= 28))
replace IMC_edad_sexo = 0 if Genero == 1 & ! ((Edad >= 19 & Edad <= 24) & (IMC >= 18 & IMC <= 23) | (Edad >
24 & Edad <= 34) & (IMC >= 19 & IMC <= 24) | (Edad > 34 & Edad <= 44) & (IMC >= 20 & IMC <= 25) |
(Edad > 44 & Edad <= 54) & (IMC >= 21 & IMC <= 26) | (Edad > 54 & Edad <= 65) & (IMC >= 22 & IMC <= 29)
| (Edad > 65 & Edad <= .) & (IMC >= 23 & IMC <= 28))
replace IMC_edad_sexo = . if (Genero == . | Edad == . | Edad < 19 | IMC == .)
label variable IMC_edad_sexo "Normopeso según la edad y el sexo"
label values IMC_edad_sexo dSiNo
Pàgina 24 de 24 © 2016 - Josep Maria Losilla Vidal, Jaume Vives Brosa y Eva Penelo (UAB)