Combinar archivos de datos de fusión / Módulos de aprendizaje SPSS

Introducción

Cuando tiene dos archivos de datos, puede combinarlos fusionándolos uno al lado del otro, haciendo coincidir las observaciones basadas en un identificador. Por ejemplo, a continuación tenemos un archivo que contiene dads y tenemos un archivo que contiene faminc. Nos gustaría combinar los archivos para que tengamos la observación de dads en la misma línea con la observación de faminc basada en la variable clave famid.

dads famid name inc 2 Art 22000 1 Bill 30000 3 Paul 25000 faminc famid faminc96 faminc97 faminc98 3 75000 76000 77000 1 40000 40500 41000 2 45000 45400 45800 

Después de combinar los padres y faminc, los datos se verían así.

famid name inc faminc96 faminc97 faminc98 1 Bill 30000 40000 40500 41000 2 Art 22000 45000 45400 45800 3 Paul 25000 75000 76000 77000 

Fusión uno a uno

Comencemos por crear los archivos que fusionaremos. A continuación creamos los archivos papás.sav y faminc.sav.

DATA LIST LIST / famid * name (A4) inc.BEGIN DATA.2 Art 220001 Bill 300003 Paul 25000END DATA.LIST.SAVE OUTFILE = "dads.sav".DATA LIST LIST / famid faminc96 faminc97 faminc98.BEGIN DATA.3 75000 76000 770001 40000 40500 410002 45000 45400 45800END DATA.LIST.SAVE OUTFILE = "faminc.sav". 

La salida de estas declaraciones se muestra a continuación, confirmando que hemos leído los datos correctamente.

FAMID NAME INC 2.00 Art 22000.00 1.00 Bill 30000.00 3.00 Paul 25000.00FAMID FAMINC96 FAMINC97 FAMINC98 3.00 75000.00 76000.00 77000.00 1.00 40000.00 40500.00 41000.00 2.00 45000.00 45400.00 45800.00

Hay tres pasos para hacer coincidir los padres de fusión.sav con faminc.sav. (Tenga en cuenta que esta es una fusión de uno a uno porque hay una correspondencia de uno a uno entre los registros de dads y faminc.) Estos tres pasos se ilustran a continuación.

  1. Utilice CASOS DE ORDENACIÓN para ordenar papás en famid y guardar ese archivo (lo llamaremos dads2.sav)
  2. Use CASOS de ORDENACIÓN para ordenar faminc en famid y guardar ese archivo (lo llamaremos faminc2.sav)
  3. Usar ARCHIVOS DE COINCIDENCIA para fusionar el dads2.sav y faminc2.archivos sav basados en famid

A continuación mostramos los comandos para realizar la fusión.

GET FILE="dads.sav".SORT CASES BY famid.SAVE OUTFILE="dads2.sav".GET FILE="faminc.sav".SORT CASES BY famid.SAVE OUTFILE="faminc2.sav".MATCH FILES FILE="dads2.sav" /FILE="faminc2.sav" /BY famid.LIST.

La salida a continuación muestra que la combinación de coincidencias funcionó correctamente.

FAMID NAME INC FAMINC96 FAMINC97 FAMINC98 1.00 Bill 30000.00 40000.00 40500.00 41000.00 2.00 Art 22000.00 45000.00 45400.00 45800.00 3.00 Paul 25000.00 75000.00 76000.00 77000.00

Fusión de uno a muchos

El siguiente ejemplo considera una fusión de uno a muchos en la que una observación en un archivo puede tener varios registros coincidentes en otro archivo. Imaginen que teníamos un archivo con padres como vimos en el ejemplo anterior, y teníamos un archivo con niños donde un padre podía tener más de un hijo. Usted ve por qué esto se llama una fusión de uno a muchos, ya que está emparejando una observación de papá con una o más (muchas) observaciones de niños. Recuerde que el archivo de papás es el archivo con una observación, y el archivo de niños es el que tiene muchas observaciones. A continuación, creamos el archivo de datos para los padres y para los niños.

DATA LIST LIST / famid * name (A4) inc .BEGIN DATA.2 Art 220001 Bill 300003 Paul 25000END DATA.LIST.SAVE OUTFILE = "dads.sav".DATA LIST LIST / famid * kidname (A4) birth age wt * sex (A1).BEGIN DATA.1 Beth 1 9 60 f1 Bob 2 6 40 m1 Barb 3 3 20 f2 Andy 1 8 80 m2 Al 2 6 50 m2 Ann 3 2 20 f3 Pete 1 6 60 m3 Pam 2 4 40 f3 Phil 3 2 20 mEND DATA.LIST.SAVE OUTFILE="kids.sav".

Como puede ver a continuación, los pasos para hacer una fusión de uno a muchos son similares a la fusión de uno a uno que vimos anteriormente.

  1. Use ORDENAR CASOS POR para ordenar papás en famid y guardar ese archivo (lo llamaremos dads2)
  2. Use ORDENAR CASOS POR para ordenar niños en famid y guardar ese archivo (lo llamaremos kids2)
  3. Use ARCHIVOS DE COINCIDENCIA para fusionar los archivos dads2 y kids2. Sin embargo, dado que el archivo dads es el archivo con una observación, use /TABLE=»dads2.sav», not / FILE= » dads2.sav » para especificar el archivo dads.
GET FILE="dads.sav".SORT CASES BY famid.SAVE OUTFILE="dads2.sav".GET FILE="kids.sav".SORT CASES BY famid.SAVE OUTFILE="kids2.sav".MATCH FILES FILE="kids2.sav" /TABLE="dads2.sav" /BY famid.LIST.

El resultado a continuación muestra que esta fusión funcionó como esperábamos.

FAMID KIDNAME BIRTH AGE WT SEX NAME INC 1.00 Beth 1.00 9.00 60.00 f Bill 30000.00 1.00 Bob 2.00 6.00 40.00 m Bill 30000.00 1.00 Barb 3.00 3.00 20.00 f Bill 30000.00 2.00 Andy 1.00 8.00 80.00 m Art 22000.00 2.00 Al 2.00 6.00 50.00 m Art 22000.00 2.00 Ann 3.00 2.00 20.00 f Art 22000.00 3.00 Pete 1.00 6.00 60.00 m Paul 25000.00 3.00 Pam 2.00 4.00 40.00 f Paul 25000.00 3.00 Phil 3.00 2.00 20.00 m Paul 25000.00

La diferencia clave entre una fusión de uno a uno y una fusión de uno a muchos es que necesitas usar /TABLE=»dads2.sav » en lugar de / FILE=»dads2.sav». Para sus datos, cuando realice una fusión de uno a muchos, pregúntese qué archivo desempeña el papel de uno (en uno a muchos). Para ese archivo, use /TABLE= en lugar de /FILE=.

Cometamos un error intencionalmente y usemos / FILE= » dads2.sav » y ver lo que hace SPSS.

MATCH FILES /FILE="kids2.sav" /FILE="dads2.sav" /BY famid.LIST.

Lo primero que notamos es que SPSS nos da la advertencia que se muestra a continuación. Esto nos dice que hay varios hijos para un padre dado.

Warning # 5132Duplicate key in a file. The BY variables do not uniquely identify eachcase on the indicated file. Please check the results carefully.

Como aconseja SPSS, inspeccionaremos los resultados cuidadosamente. De hecho, vemos que los resultados no son los que deseábamos. Cuando había varios hijos por padre, solo se fusionaba el padre con el primer hijo, y luego a los siguientes hijos con los mismos padres se les asignaban valores faltantes para la información del padre (nombre e inc). Cuando usamos el subcomando / TABLE= en el ejemplo anterior, SPSS llevaba la información de los papás a todos los niños.

FAMID KIDNAME BIRTH AGE WT SEX NAME INC 1.00 Beth 1.00 9.00 60.00 f Bill 30000.00 1.00 Bob 2.00 6.00 40.00 m . 1.00 Barb 3.00 3.00 20.00 f . 2.00 Andy 1.00 8.00 80.00 m Art 22000.00 2.00 Al 2.00 6.00 50.00 m . 2.00 Ann 3.00 2.00 20.00 f . 3.00 Pete 1.00 6.00 60.00 m Paul 25000.00 3.00 Pam 2.00 4.00 40.00 f . 3.00 Phil 3.00 2.00 20.00 m .

Ordenar las variables en el nuevo archivo

Puede usar el subcomando / MAP con el comando AGREGAR ARCHIVOS para ver el orden de las variables en el nuevo archivo, como se ilustra a continuación. Si desea reorganizar el orden de las variables en el nuevo archivo, también puede agregar el subcomando /KEEP al comando AGREGAR ARCHIVOS. Las variables se ordenarán en el nuevo archivo en el orden en que se listen en el subcomando / KEEP. Si no lista todas las variables en el subcomando /KEEP, las variables que no aparecen en la lista no estarán presentes en el nuevo archivo. También tenga en cuenta que puede enumerar las primeras variables si son las únicas que necesitan reordenarse, y luego usar la palabra clave ALL para incluir el resto de las variables en el nuevo archivo. Las variables no especificadas en el subcomando /KEEP permanecerán en el orden en que se encuentran en los archivos originales.

DATA LIST LIST / famid * name (A4) inc.BEGIN DATA.2 Art 220001 Bill 300003 Paul 25000END DATA.SAVE OUTFILE = "dads.sav".DATA LIST LIST / famid * name (A4) inc.BEGIN DATA.1 Bess 150003 Pat 500002 Amy 18000END DATA.SAVE OUTFILE = "moms.sav".
ADD FILES FILE="dads.sav" /FILE="moms.sav" /KEEP = name ALL /MAP.EXECUTE.
Map of the result fileResult Input1 Input2
------ ------ ------
NAME NAME NAME
FAMID FAMID FAMID
INC INC INC

Como puede ver, las variables en el nuevo archivo ahora están en el nombre de orden, famid inc.

5.1 Registros que no coinciden en una fusión uno a uno

Los dos archivos de datos pueden tener registros que no coinciden. A continuación, ilustramos esto al incluir un padre adicional (Karl en famid 4) que no tiene una familia correspondiente, y hay dos familias adicionales (5 y 6) en el archivo familiar que no tienen un padre correspondiente.

DATA LIST LIST / famid * name (A4) inc.BEGIN DATA.2 Art 220001 Bill 300003 Paul 250004 Karl 95000END DATA.SORT CASES BY famid.SAVE OUTFILE = "dads.sav".DATA LIST LIST / famid faminc96 faminc97 faminc98.BEGIN DATA.3 75000 76000 770001 40000 40500 410002 45000 45400 458005 55000 65000 700006 22000 24000 28000END DATA.SORT CASES BY famid.SAVE OUTFILE = "faminc.sav".MATCH FILES FILE="dads.sav" /IN=fromdad /FILE="faminc.sav" /IN=fromfam /BY famid.LIST.CROSSTABS /TABLES= fromdad BY fromfam.

Como puede ver anteriormente, usamos /IN = fromdad para crear una variable 0/1 que indica si el archivo resultante contiene un registro con datos del archivo dads. Del mismo modo, usamos /IN=fromfam para indicar si el archivo resultante tiene un registro del archivo faminc. La LISTA y las TABLAS CRUZADAS nos muestran los registros que no coinciden.

La salida del comando LIST nos muestra que cuando había registros no coincidentes. Para famid 4, el valor de fromdad es 1 y fromfam es 0, como esperaríamos ya que había datos de papás para famid 4, pero no datos de faminc. Además, como es de esperar, este registro tiene datos válidos para las variables del archivo dads (nombre e inc) y datos faltantes para las variables de faminc (faminc96 faminc97 y faminc98). Vemos el patrón inverso para famid 5 y 6.

FAMID NAME INC FAMINC96 FAMINC97 FAMINC98 FROMDAD FROMFAM 1.00 Bill 30000.00 40000.00 40500.00 41000.00 1 1 2.00 Art 22000.00 45000.00 45400.00 45800.00 1 1 3.00 Paul 25000.00 75000.00 76000.00 77000.00 1 1 4.00 Karl 95000.00 . . . 1 0 5.00 . 55000.00 65000.00 70000.00 0 1 6.00 . 22000.00 24000.00 28000.00 0 1

Si observamos las variables fromdad y fromfam, podemos ver que hay tres registros que tienen datos coincidentes, uno que solo tiene datos de los padres y dos registros que solo tienen datos del archivo faminc. La tabla cruzada a continuación nos muestra los mismos resultados, y es una forma más fácil de calcular la coincidencia que hacer manualmente la coincidencia.

FROMDAD by FROMFAM FROMFAM Page 1 of 1 Count | | | Row | 0| 1| TotalFROMDAD --------+------+------+ 0 | | 2| 2 | | | 33.3 +------+------+ 1 | 1| 3| 4 | | | 66.7 +------+------+ Column 1 5 6 Total 16.7 83.3 100.0

Al hacer coincidir archivos, le sugerimos que utilice esta estrategia para verificar la coincidencia de los dos archivos. Si hay registros no coincidentes inesperados, debe investigar para comprender la causa de los registros no coincidentes.

Puede usar SELECCIONAR SI para eliminar algunos de los registros que no coinciden. Por ejemplo, si desea mantener solo los registros donde los padres coincidieron con la información de la familia, puede escribir

SELECT IF fromdad AND fromfam.LIST.

Los resultados se muestran a continuación, incluyendo solo los tres registros coincidentes.

FAMID NAME INC FAMINC96 FAMINC97 FAMINC98 FROMDAD FROMFAM 1.00 Bill 30000.00 40000.00 40500.00 41000.00 1 1 2.00 Art 22000.00 45000.00 45400.00 45800.00 1 1 3.00 Paul 25000.00 75000.00 76000.00 77000.00 1 1

5.2 Registros no coincidentes en una fusión de uno a muchos

SPSS maneja la inclusión de registros no coincidentes en una fusión de uno a muchos de manera diferente a una fusión de uno a uno. Recuerde que en una fusión de uno a muchos, hay un archivo que tiene una observación que coincide con muchas observaciones en el otro archivo; nos referiremos a estos como el archivo uno y el archivo muchos. Si hay observaciones en un archivo que no coinciden con el archivo de muchos, entonces estas observaciones no aparecerán en el archivo combinado en absoluto. Si hay observaciones en el archivo muchos que no coinciden con el archivo uno, esos registros aparecerán en el archivo combinado. Si esto es lo que desea, puede combinar los archivos como se ilustra en la Sección 3 y usar /IN = como se ilustra en la sección anterior para rastrear la coincidencia. Sin embargo, si desea que los registros no coincidentes del archivo uno y varios aparezcan en el archivo combinado, puede usar la estrategia de coincidencia que se describe a continuación.

A continuación, usamos nuestro ejemplo para combinar padres con niños, y en este ejemplo tenemos registros no coincidentes en ambos archivos. A continuación, comparamos los archivos para incluir todos los registros no coincidentes en el archivo combinado. Las partes que son diferentes se indican en rojo.

DATA LIST LIST / famid * name (A4) inc.BEGIN DATA.2 Art 220001 Bill 300003 Paul 250004 Karl 95000END DATA.SAVE OUTFILE = "dads.sav".DATA LIST LIST / famid * kidname (A4) birth age wt * sex (A1).BEGIN DATA.1 Beth 1 9 60 f1 Bob 2 6 40 m1 Barb 3 3 20 f2 Andy 1 8 80 m2 Al 2 6 50 m2 Ann 3 2 20 f3 Pete 1 6 60 m3 Pam 2 4 40 f3 Phil 3 2 20 m5 Ted 1 4 35 m5 Tess 2 2 18 fEND DATA.SAVE OUTFILE="kids.sav".GET FILE="kids.sav".SORT CASES BY famid.SAVE OUTFILE="kids2.sav".GET FILE="dads.sav".SORT CASES BY famid.SAVE OUTFILE="dads2.sav".SAVE OUTFILE="dadid.sav" /KEEP=famid.MATCH FILES FILE="kids2.sav" /IN=inkid /FILE="dadid.sav" /BY famid .LIST.SAVE OUTFILE="temp.sav".MATCH FILES FILE="temp.sav" /TABLE="dads2.sav" /IN=dads /BY famid.LIST.

La sección en rojo agrega un paso adicional a la coincidencia. El propósito de este paso es agregar cualquier valor de famid que solo esté en el archivo dads al archivo kids. Lo hace haciendo una fusión uno a uno entre dadid y los niños y guarda ese archivo como temporero. Dado que dadid es solo el famid de todos los papás, esta combinación básicamente agrega observaciones para cualquier famid que esté en el archivo de papás pero no en el archivo de niños, y lo guarda como temp. Luego, podemos combinar temp con dads2 y temp tendrá un famid para cada observación en el archivo dads2. Esto asegura que el archivo resultante incluirá todas las observaciones del archivo dads, incluso si no tienen un registro coincidente en el archivo kids. El resultado se muestra a continuación. De hecho, el archivo contiene la observación del padre Karl, que no tiene hijos iguales. Si omitimos el código extra en este paso, ese registro no se habría incluido en este archivo.

FAMID KIDNAME BIRTH AGE WT SEX INKID NAME INC DADS 1.00 Beth 1.00 9.00 60.00 f 1 Bill 30000.00 1 1.00 Bob 2.00 6.00 40.00 m 1 Bill 30000.00 1 1.00 Barb 3.00 3.00 20.00 f 1 Bill 30000.00 1 2.00 Andy 1.00 8.00 80.00 m 1 Art 22000.00 1 2.00 Al 2.00 6.00 50.00 m 1 Art 22000.00 1 2.00 Ann 3.00 2.00 20.00 f 1 Art 22000.00 1 3.00 Pete 1.00 6.00 60.00 m 1 Paul 25000.00 1 3.00 Pam 2.00 4.00 40.00 f 1 Paul 25000.00 1 3.00 Phil 3.00 2.00 20.00 m 1 Paul 25000.00 1 4.00 . . . 0 Karl 95000.00 1 5.00 Ted 1.00 4.00 35.00 m 1 . 0 5.00 Tess 2.00 2.00 18.00 f 1 . 0

5.3 Variables con el mismo nombre, pero información diferente

A continuación tenemos los archivos con la información sobre los padres y la familia, pero mira más de cerca los nombres de las variables. En el archivo dads, hay una variable llamada inc98, y en el archivo de familia hay variables inc96, inc97 e inc98. Vamos a fusionar estos archivos y ver qué hace SPSS.

DATA LIST LIST / famid * name (A4) inc98.BEGIN DATA.2 Art 220001 Bill 300003 Paul 25000END DATA.SAVE OUTFILE = "dads.sav".DATA LIST LIST / famid inc96 inc97 inc98.BEGIN DATA.3 75000 76000 770001 40000 40500 410002 45000 45400 45800END DATA.SAVE OUTFILE = "faminc.sav".GET FILE="dads.sav".SORT CASES BY famid.SAVE OUTFILE="dads2.sav".GET FILE="faminc.sav".SORT CASES BY famid.SAVE OUTFILE="faminc2.sav".MATCH FILES FILE="dads2.sav" /FILE="faminc2.sav" /BY famid.LIST.

Los resultados se muestran a continuación. Como puede ver, la variable inc98 tiene los datos del archivo dads, el archivo que apareció primero en el comando MATCH FILES. Cuando se coinciden archivos que tienen la misma variable, SPSS utilizará los valores del archivo que aparece más temprano en el comando MATCH FILES.

FAMID NAME INC98 INC96 INC97 1.00 Bill 30000.00 40000.00 40500.00 2.00 Art 22000.00 45000.00 45400.00 3.00 Paul 25000.00 75000.00 76000.00

Hay un par de maneras de resolver este problema.

Solución #1. La solución más obvia es elegir nombres de variables en los archivos originales que no entren en conflicto entre sí. Sin embargo, puede recibir archivos donde los nombres ya han sido elegidos.

Solución # 2. Puede cambiar el nombre de las variables en el comando ARCHIVOS DE COINCIDENCIA (que cambia el nombre de las variables antes de hacer la coincidencia). Esto le permite seleccionar nombres de variables que no entren en conflicto entre sí, como se ilustra a continuación.

GET FILE="dads.sav".SORT CASES BY famid.SAVE OUTFILE="dads2.sav".GET FILE="faminc.sav".SORT CASES BY famid.SAVE OUTFILE="faminc2.sav".MATCH FILES FILE="dads2.sav" /RENAME=(inc98 = dadinc98) /FILE="faminc2.sav" /RENAME=(inc96 inc97 inc98 = faminc96 faminc97 faminc98) /BY famid.LIST.

Como puede ver a continuación, las variables se renombraron como se especificó.

FAMID NAME DADINC98 FAMINC96 FAMINC97 FAMINC98 1.00 Bill 30000.00 40000.00 40500.00 41000.00 2.00 Art 22000.00 45000.00 45400.00 45800.00 3.00 Paul 25000.00 75000.00 76000.00 77000.00

5.4 Las mismas variables con información de diccionario diferente

Este problema es similar al descrito anteriormente. En este ejemplo, tenemos dos variables con el mismo nombre y la misma información, pero con información de diccionario diferente asociada a ellas. Esta información del diccionario podría incluir etiquetas de valores y / o etiquetas de variables. Al igual que en el ejemplo anterior, SPSS tomará la información del archivo que aparece primero en el comando MATCH FILES. No se emitirá ningún mensaje de error o advertencia para informarle que la información de la variable en el archivo posterior se ha perdido. La solución a este problema es listar primero en el comando MATCH FILES el archivo con la información del diccionario que desea en el archivo resultante.

5.5 Ha ejecutado el comando AGREGAR ARCHIVOS y no ha pasado nada

Si ejecuta solo el comando AGREGAR ARCHIVOS, como se muestra a continuación, SPSS no hará nada. Sin embargo, verá una nota en la esquina inferior derecha del editor de datos que dice «transformación pendiente».

ADD FILES FILE="dads.sav" /FILE="moms.sav"

Solución: La solución es agregar el comando ejecutar o un comando de procedimiento que forzará la ejecución de la transformación, como el comando list o el comando crosstab.

ADD FILES FILE="dads.sav" /FILE="moms.sav"execute.

Leave a Reply

Tu dirección de correo electrónico no será publicada.