Combine mesclando arquivos de dados / módulos de aprendizagem SPSS

introdução

quando você tem dois arquivos de dados, você pode combiná-los mesclando-os lado a lado, combinando observações com base em um identificador. Por exemplo, abaixo temos um arquivo contendo pais e temos um arquivo contendo faminc. Gostaríamos de combinar mesclar os arquivos juntos para que tenhamos a observação dos pais na mesma linha com a observação faminc baseada na variável-chave 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 

depois de combinar a fusão dos pais e faminc, os dados seriam assim.

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

mesclar um para um

vamos começar criando os arquivos que iremos mesclar. Abaixo, criamos os arquivos pais.SAV e 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". 

a saída dessas declarações é mostrada abaixo, confirmando que lemos os dados corretamente.

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

existem três etapas para combinar pais de mesclagem.sav com faminc.sav. (Observe que esta é uma fusão de um para um porque há uma correspondência de um para um entre os pais e os registros faminc.) Estas três etapas são ilustradas abaixo.

  1. Use casos de classificação para classificar pais no famid e salvar esse arquivo (vamos chamá-lo de dads2.sav)
  2. Use casos de classificação para classificar o faminc no famid e salvar esse arquivo (vamos chamá-lo de faminc2.sav)
  3. Use arquivos de correspondência para mesclar os dados2.SAV e faminc2.arquivos sav baseados em famid

abaixo, mostramos os comandos para executar a mesclagem.

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.

a saída abaixo mostra que a combinação de correspondência funcionou corretamente.

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

Um-para-muitos mesclagem

O próximo exemplo considera um um-para-muitos série onde uma observação em um arquivo pode ter vários registros coincidentes em outro arquivo. Imagine que tínhamos um arquivo com pais como vimos no exemplo anterior, e tínhamos um arquivo com crianças onde um pai poderia ter mais de um filho. Você vê por que isso é chamado de um para muitos se fundem, já que você está combinando uma observação de pai com uma ou mais (muitas) observações de crianças. Lembre-se de que o arquivo dads é o arquivo com uma observação, e o arquivo kids é aquele com muitas observações. Abaixo, criamos o arquivo de dados para os pais e para as crianças.

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 você vê abaixo, as etapas para fazer uma mesclagem de um para muitos são semelhantes à mesclagem de um para um que vimos acima.

  1. Usar CLASSIFICAR CASOS BY para ordenar os pais no famid e salvar esse arquivo (vamos chamá-lo de dads2)
  2. Usar CLASSIFICAR CASOS POR classificar as crianças em famid e salvar esse arquivo (vamos chamá-lo de kids2)
  3. Usar CORRESPONDEM aos ARQUIVOS para mesclar o dads2 e kids2 arquivos. No entanto, como o arquivo dads é o arquivo com uma observação, use /TABLE=”dads2.SAV”, não /FILE= ” dads2.sav ” para especificar o arquivo 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.

a saída abaixo mostra que essa mesclagem funcionou como esperávamos.

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

a principal diferença entre uma mesclagem de um para um e uma mesclagem de um para muitos é que você precisa usar /TABLE=”dads2.sav “em vez de / FILE=” dads2.sav”. Para seus dados, quando você faz uma mesclagem de um a muitos, pergunte a si mesmo qual arquivo desempenha o papel de um (em um a muitos). Para esse arquivo, use / TABLE = em vez de / FILE=.

vamos intencionalmente cometer um erro e usar / FILE= ” dads2.sav ” e veja o que o SPSS faz.

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

a primeira coisa que notamos é que o SPSS nos dá o aviso mostrado abaixo. Isso está nos dizendo que existem vários filhos para um determinado pai.

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

como o SPSS aconselha, inspecionaremos os resultados com cuidado. De fato, vemos que os resultados não são o que desejamos. Quando havia vários filhos por pai, ele apenas fundiu o pai com o primeiro filho e, em seguida, os seguintes filhos com os mesmos pais receberam valores ausentes para as informações do Pai (Nome E inc). Quando usamos o subcomando / TABLE = no exemplo anterior, o SPSS carregava as informações dos pais em todas as crianças.

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 .

ordenando as variáveis no novo arquivo

você pode usar o subcomando / MAP Com o comando Adicionar arquivos para ver a ordem das variáveis no novo arquivo, conforme ilustrado abaixo. Se você quiser reorganizar a ordem das variáveis no novo arquivo, você também pode adicionar o subcomando /KEEP ao comando ADD FILES. As variáveis serão ordenadas no novo arquivo na ordem em que você as lista no subcomando /KEEP. Se você não listar todas as variáveis no subcomando / KEEP, as variáveis não listadas não estarão presentes no novo arquivo. Observe também que você pode listar as primeiras variáveis se forem as únicas que precisam ser reordenadas e, em seguida, usar a palavra-chave ALL para ter o restante das variáveis incluídas no novo arquivo. As variáveis não especificadas no subcomando / KEEP permanecerão na ordem em que estão nos arquivos originais.

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 você pode ver, as variáveis no novo arquivo estão agora na ordem de nome, famid inc.

5.1 registros incompatíveis em mesclagem de um para um

os dois arquivos de dados podem ter registros que não correspondem. Abaixo, ilustramos isso incluindo um pai extra (Karl em famid 4) que não tem uma família correspondente, e há duas famílias extras (5 e 6) no arquivo da família que não têm um pai correspondente.

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 você vê acima, usamos /in = fromdad para criar uma variável 0/1 que indica se o arquivo resultante contém um registro com dados do arquivo dads. Da mesma forma, usamos /in=fromfam para indicar se o arquivo resultante tem um registro do arquivo faminc. A lista e CROSSTABS nos mostram sobre os registros de incompatibilidade.

a saída do comando LIST nos mostra que quando havia registros incompatíveis. Para famid 4, o valor de fromdad é 1 e fromfam é 0, como esperaríamos, pois havia dados de pais para famid 4, mas nenhum dado de faminc. Além disso, como esperamos, esse registro possui dados válidos para as variáveis do arquivo dads (nome e inc) e dados ausentes para as variáveis do faminc (faminc96 faminc97 e faminc98). Vemos o padrão reverso para famid 5 e 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

se olharmos para as variáveis fromdad e fromfam, podemos ver que existem três registros que possuem dados correspondentes, um que possui dados apenas dos pais e dois registros que possuem dados apenas do arquivo faminc. A tabela cruzada abaixo nos mostra os mesmos resultados, e é uma maneira mais fácil de calcular a correspondência do que calcular manualmente a correspondência.

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

ao combinar arquivos, sugerimos que você use essa estratégia para verificar a correspondência dos dois arquivos. Se houver registros incompatíveis inesperados, você deve investigar para entender a causa dos registros incompatíveis.

você pode usar SELECT IF para eliminar alguns dos registros não correspondentes. Por exemplo, se você quiser manter apenas os registos onde os pais combinados com as informações da família, você pode digitar

SELECT IF fromdad AND fromfam.LIST.

Os resultados são apresentados abaixo, incluindo apenas os três registros correspondentes.

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 de incompatibilidade em mesclagem de um para muitos

o SPSS lida com a inclusão de registros incompatíveis em uma mesclagem de um para muitos de maneira diferente de uma mesclagem de um para um. Lembre-se de que, em uma mesclagem de um para muitos, há um arquivo que possui uma observação que corresponde a muitas observações no outro arquivo; vamos nos referir a elas como um arquivo e muitos arquivos. Se houver observações em um arquivo que não correspondam ao arquivo muitos, essas observações não aparecerão no arquivo mesclado. Se houver observações nos muitos arquivos que não correspondam a um arquivo, esses registros aparecerão no arquivo mesclado. Se for isso que você deseja, você pode mesclar os arquivos conforme ilustrado na Seção 3 e usar o /in= conforme ilustrado na seção anterior para rastrear a correspondência. No entanto, se você quiser que registros incompatíveis de um e muitos arquivos apareçam no arquivo mesclado, poderá usar a estratégia de correspondência descrita abaixo.

abaixo, usamos nosso exemplo para mesclar pais com filhos e, neste exemplo, temos registros incompatíveis em ambos os arquivos. Abaixo, combinamos os arquivos para incluir todos os registros incompatíveis no arquivo mesclado. As partes que são diferentes são indicadas em vermelho.

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.

a seção em vermelho adiciona uma etapa extra à correspondência. O objetivo desta etapa é adicionar quaisquer valores do famid que estejam apenas no arquivo dads ao arquivo kids. Ele faz fazendo uma fusão um-para-um entre o dahid e as crianças e salva esse arquivo como temporário. Como dahid apenas o famid de todos os pais, essa mesclagem basicamente adiciona observações para qualquer famid que esteja no arquivo dads, mas não no arquivo kids, e salva isso como temporário. Então, podemos então mesclar temp com dads2 e temp terá um famid para cada observação no arquivo dads2. Isso garante que o arquivo resultante incluirá todas as observações do arquivo dads, mesmo que eles não tenham um registro correspondente no arquivo kids. O resultado é mostrado abaixo. De fato, o arquivo contém a observação do pai Karl, que não tem filhos correspondentes. Se omitíssemos o código extra nesta etapa, esse registro não teria sido incluído neste arquivo.

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 variáveis com o mesmo nome, mas Informações diferentes

abaixo, temos os arquivos com as informações sobre os pais e a família, mas olhamos mais de perto os nomes das variáveis. No arquivo dads, existe uma variável chamada inc98, e no arquivo familiar existem variáveis inc96, inc97 e inc98. Vamos em frente e mesclar esses arquivos e ver o que o SPSS faz.

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.

os resultados são mostrados abaixo. Como você vê, a variável inc98 tem os dados do arquivo dads, o arquivo que apareceu primeiro no comando MATCH FILES. Quando você combina arquivos que têm a mesma variável, o SPSS usará os valores do arquivo que aparece mais cedo no 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

existem algumas maneiras de resolver esse problema.

solução #1. A solução mais óbvia é escolher nomes de variáveis nos arquivos originais que não entrarão em conflito entre si. No entanto, você pode receber arquivos onde os nomes já foram escolhidos.

Solução #2. Você pode renomear as variáveis no comando MATCH FILES (que renomeia as variáveis antes de fazer a correspondência). Isso permite que você selecione nomes de variáveis que não entrem em conflito entre si, conforme ilustrado abaixo.

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 você pode ver abaixo, as variáveis foram renomeadas como especificamos.

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 as mesmas variáveis com informações de dicionário diferentes

este problema é semelhante ao descrito acima. Neste exemplo, temos duas variáveis com o mesmo nome e as mesmas informações, mas com diferentes informações de dicionário associadas a elas. Essas informações do dicionário podem incluir rótulos de valor e / ou rótulos de variáveis. Tal como acontece com o exemplo acima, o SPSS obterá as informações do arquivo listado primeiro no comando MATCH FILES. Nenhuma mensagem de erro ou aviso será emitida para que você saiba que as informações da variável no arquivo posterior foram perdidas. A solução para este problema é listar primeiro no comando MATCH FILES O arquivo com as informações do dicionário que você deseja no arquivo resultante.

5.5 você executou o comando ADD FILES, e nada aconteceu

se você executar apenas o comando ADD FILES, como mostrado abaixo, o SPSS não fará nada. No entanto, você verá uma nota no canto inferior direito do editor de dados dizendo “transformação pendente”.

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

solução: a solução é adicionar o comando Executar ou um comando de procedimento que forçará a execução da transformação, como o comando list ou o comando crosstab.

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

Leave a Reply

O seu endereço de email não será publicado.