domingo, 13 de diciembre de 2015

Comandos replace y recode

Comando replace

Una vez creadas las variables, podemos utilizar el comando replace para modificar variables ya existentes, alterando los datos.
La sintaxis del comando replace es la siguiente:

        replace oldvar =exp [if] [in] [, nopromote]

Es un comando sumamente útil, ya que trabajando con variables es muy frecuente que necesitamos modificar los datos, sustituyendolos por algún valor o a partir de una función lógica o expresión aritmética.


A través del menú podremos encontrar el comando del siguiente modo:
         
        Data > Create or change data > Change contents of variable

Podemos también utilizar el comando db (Dialog box):

        db replace




Comando recode

A través del comando recode es posible recodificar variables de acuerdo a las reglas que especifiquemos. Los valores que no estén incluidos en las reglas especificadas, se mantendrán incambiados.

En la sintaxis, es necesario especificar los valores de partida y los de destino, y es posible generar una nueva variable para no sobreescribir la variable que estamos recodificando, combinando el comando recode con el comando gen.

Para especificar los valores de partida podemos indicar simplemente el valor, más de un valor separándolos por un espacio, un rango utilizando el símbolo / , o emplear valores no numéricos, tales como: min o max, para tomar el valor mínimo o máximo; missing para recodificar todos los casos perdidos; nonmissing para los casos válidos o else para el resto de los valores no especificados.
Al recodificar, es posible también definir etiquetas para los nuevos valores de la variable.

La sintaxis del comando replace es la siguiente:

        Sintaxis básica:
        recode varlist (rule) [(rule) ...] [, generate(newvar)]

        Sintaxis completa:
        recode varlist (erule) [(erule) ...] [if] [in] [, options]

A través del menú podremos encontrar el comando del siguiente modo:
         
        Data > Create or change data > Other variable-transformation commands > Recode categorical variable


Podemos también utilizar el comando dialog box:

        db recode


Comandos gen y egen

Comando generate (gen)

El comando generate (gen, de modo abreviado) nos servirá para crear una nueva variable. A través de este comando podremos especificar el nombre y el contenido de la misma, mediante funciones y expresiones lógicas.

Es un comando de gran utilidad, ya que nos permitirá modificar bases ya existentes o crear nuevas bases de datos, a través de una gran variedad de funciones o expresiones.

La sintaxis del comando generate o gen es la siguiente:

       generate [type] newvar[:lblname] =exp [if] [in]

Si no se especifica el tipo de variable, se determinará según el tipo de resultado que genere la expresión señalada (= exp).

A través del menú podremos encontrar el comando del siguiente modo:

        Data > Create or change data > Create new variable

Podemos también utilizar el comando db (Dialog box):

        db gen

En ambos casos, nos aparecerá la siguiente ventana que, como se puede observar, permite ingresar la misma información que a través de la sintaxis: tipo de variable, nombre, etiqueta, valor o expresión de la misma, if y/o in.

 


Comando extended generate (egen)

Al igual que el comando gen, su comando extendido, egen, permite crear nuevas variables. Sin embargo, egen permite trabajar con funciones más complejas o algunas posibilidades que gen no permite.

La sintaxis del comando egen es la siguiente:

        egen [type] newvar = fcn(arguments) [if] [in] [, options]

A diferencia de gen, egen permite operar sin que afecten los valores faltantes, y permite utilizar las siguientes funciones:

anycount
anymatch
anyvalu
concat
count
cut
at
group
diff
ends
fill
group
iqr
kurt
 mad
max
 mdev
mean
median
min
mode
mtr
pc
pctile
rank
rowfirst
rowlast
rowmax
rowmean
rowmedian
rowmin
rowmiss
rownonmiss
rowpctile
rowsd
rowtotal
sd
seq
skew
std
tag
total

A través del menú podremos encontrar el comando del siguiente modo:

         Data > Create or change data > Create new variable (extended)
  
Podemos también utilizar el comando db (Dialog box):

        db egen

En ambos casos, nos aparecerá la siguiente ventana que permite ingresar la misma información que a través de la sintaxis.