Sunday 17 September 2017

Como fundir dois conjuntos de dados no stata forex


AVISO: O grupo de consultoria estatística IDRE estará migrando o site para o WordPress CMS em fevereiro para facilitar a manutenção e criação de novos conteúdos. Algumas de nossas páginas antigas serão removidas ou arquivadas de modo que elas não serão mais mantidas. Vamos tentar manter os redirecionamentos para que os URLs antigos continuem a funcionar da melhor maneira possível. Bem-vindo ao Instituto de Pesquisas Digitais e Educação Ajude o Grupo de Consultoria Stat ao oferecer um presente Módulo de Aprendizagem Stata Combinando dados Este módulo irá ilustrar como você pode combinar arquivos no Stata. Os exemplos incluirão anexos de arquivos, fusão de uma a uma combinação de fósforo e fusão de uma a várias combinações. Anexando arquivos de dados Quando você tem dois arquivos de dados, você pode combiná-los empilhando-os um sobre o outro. Por exemplo, temos um arquivo contendo papéis e um arquivo contendo mães como mostrado abaixo. Se quisermos combinar esses arquivos empilhando-os um sobre o outro, podemos usar o comando append como mostrado abaixo. Podemos usar o comando da lista para ver se isso funcionou corretamente. O anexo funcionou adequadamente. Os pais e as mães são empilhados em um único arquivo. Mas, há um pequeno problema. Não podemos dizer aos pais das mães. Vamos tentar fazer isso novamente, mas primeiro vamos criar uma variável chamada momdad no arquivo de dados dos pais e mães que conterá papai para o arquivo de dados dos pais e mãe para o arquivo de dados das mães. Quando combinamos os dois arquivos, a variável momdad nos informará de quem são as mães e os pais. Aqui fazemos a variável momdad para o arquivo de dados dos pais. Nós salvamos o arquivo chamando dads1. Aqui fazemos a variável momdad para o arquivo de dados das mães. Nós salvamos o arquivo chamando moms1. Agora, adicione os pais1 e os moms1 juntos. Agora, quando listamos os dados, a variável momdad mostra quem são as mães e os pais. Combinação de fósforos Outra forma de combinar arquivos de dados é a fusão de correspondência. Digamos que queríamos combinar os pais com o arquivo de dados faminc, tendo a informação dos pais e a informação familiar lado a lado. Podemos fazer isso com uma fusão de correspondência. Vamos dar uma olhada nos papéis e no arquivo faminc. Queremos combinar os arquivos de dados para que pareçam assim. Observe que a variável familiar é usada para associar a observação do arquivo de papéis à observação apropriada do arquivo faminc. A estratégia para mesclar os arquivos é assim. 1. classifique os pais no famoso e salve esse arquivo (chamando-o de Dads2). 2. classifique a faminc em famid e guarde esse arquivo (chamando faminc2). 3. use o arquivo dads2 4. Misture o arquivo dads2 com o arquivo faminc2 usando famid para combiná-los. Aqui estão esses quatro passos. 1. Classifique o arquivo de pais por famid e salve-o como dads2 2. Classifique o arquivo faminc por famid e salve-o como faminc2. 3. Use o arquivo dads2 4. Misture com o arquivo faminc2 usando famed como variável chave. Parece que isso funcionou bem, mas qual é essa variável de mesclagem. A variável de mesclagem indica, para cada observação, como foi a fusão. Isso é útil para identificar registros incompatíveis. A fusão pode ter um dos três valores 1 - O registro contém informações apenas do arquivo1 (por exemplo, uma gravação dad2 com nenhuma gravação faminc2 correspondente. 2 - A gravação contém informações apenas do arquivo 2 (por exemplo, uma gravação faminc2 sem registro correspondente de dad2). O registro contém informações de ambos os arquivos (por exemplo, os registros dad2 e faminc2 correspondem). Quando você tem muitos registros, a tabulação de mesclagem é muito útil para resumir quantos incompatíveis você tem. No nosso caso, todos os registros correspondem de modo que o valor para a mesclagem Foi sempre 3. Combinações de fósforos de um a outro O outro tipo de fusão é chamado de fundação de um para muitos. Nossa união de uma a uma combinava pais e faminc e havia uma correspondência de um a um. Se fundir papás com Crianças, pode haver várias crianças por pai e, portanto, esta é uma fusão de uma a outra. Como você vê abaixo, a estratégia para a fusão de um para muitos é realmente a mesma coisa que a união de um para um. 1. classificar os pais no famoso e Salve esse arquivo como dads3 2. classifique as crianças no famoso e salve isso Arquivo como kids3 3. use o arquivo dads3 4. mescla o arquivo dads3 com o arquivo kids3 usando famid para combiná-los. Os 4 passos são mostrados abaixo. 1. Classifique o arquivo de dados dos pais em famid e salve esse arquivo como dads3. 2. Classifique o arquivo de dados dos filhos em famid e salve esse arquivo como kids3. 3. Use o arquivo dads3. 4. Mesclar o arquivo dads3 com o arquivo kids3 usando famid para combiná-los. Permite listar os resultados. Os resultados são um pouco mais fáceis de ler se classificarmos os dados sobre familiar e nascimento. Como você vê, isso é basicamente o mesmo que uma fusão de um para um. Você pode se perguntar se a ordem dos arquivos na instrução de mesclagem é relevante. Aqui, alteramos a ordem dos arquivos e os resultados são os mesmos. A única diferença é a ordem dos registros após a fusão. Exemplo de anexos de dados Exemplo de mesclar etapas de exemplo (one-to-one e one-to-many) Programa de exemplo de mesclagem de correspondência O conteúdo deste site não deve ser interpretado como um endosso de qualquer site, livro ou produto de software específico pelo University of California. Stata for Researchers: Combinando Conjuntos de Dados Esta é a parte oito da série Stata para Pesquisadores. Para obter uma lista de tópicos abordados por esta série, consulte a Introdução. Se você é novo para a Stata recomendamos ler os artigos em ordem. Combinar dois conjuntos de dados é uma tarefa comum de gerenciamento de dados, e que é muito fácil de realizar. No entanto, também é muito fácil errar. Antes de combinar conjuntos de dados, certifique-se de entender a estrutura de ambos os conjuntos de dados e a lógica da maneira como você está combinando-os. Caso contrário, você pode acabar com um conjunto de dados que você acha que está pronto para análise, mas é realmente um absurdo absoluto. Stata tenta garantir que você tenha pensado no que está fazendo, mas não pode dizer o que faz sentido e o que não faz. A Stata sempre funciona com um conjunto de dados por vez, então você sempre combinará o conjunto de dados em memória (o conjunto de dados mestre) com outro conjunto de dados no disco (chamado de conjunto de dados, por motivos que serão claros quando você vê A sintaxe). Anexando conjuntos de dados, o Stata o faz acrescentar quando você adiciona as observações do conjunto de dados de uso ao conjunto de dados mestre. A adição faz sentido quando as observações em ambos os conjuntos de dados representam o mesmo tipo de coisa, mas não as mesmas coisas. Por exemplo, você pode anexar um conjunto de dados de pessoas de Wisconsin a um conjunto de dados de pessoas de Illinois. Os conjuntos de dados devem ter as mesmas ou principalmente as mesmas variáveis, com os mesmos nomes. Se uma variável só aparecer em um conjunto de dados, as observações do outro conjunto de dados receberão valores faltantes para essa variável. A sintaxe é realizar um append é simples: carregar o conjunto de dados mestre e digitar: anexar usando o conjunto de dados onde o conjunto de dados é o nome do conjunto de dados que deseja anexar. Mesclando Conjuntos de Dados A Stata chama a fusão quando as observações dos dois conjuntos de dados são combinadas. Há, em teoria, quatro tipos de fusões: em uma fusão um-para-um, uma observação do conjunto de dados mestre é combinada com uma observação do conjunto de dados de uso. Uma combinação de um-para-um faz sentido quando as observações em ambos os conjuntos de dados descrevem as mesmas coisas, mas têm informações diferentes sobre elas. Por exemplo, você pode combinar as respostas que as pessoas deram na onda de uma pesquisa com as respostas que as mesmas pessoas deram na segunda onda da pesquisa. Em uma fusão de um para muitos ou vários para um, uma observação de um conjunto de dados é combinada com muitas observações do outro (a diferença entre um a muitos e muitos para um, seja o conjunto de dados mestre Tem o quotmanyquot ou o conjunto de dados de uso). Esses mesclagens têm sentido quando você possui dados hierárquicos e um conjunto de dados contém informações sobre as unidades de nível um enquanto a outra contém informações sobre as unidades de nível dois. Por exemplo, você pode mesclar informações sobre famílias com informações sobre os indivíduos que vivem nessas famílias. Em princípio, também há fusões de muitos para muitos. Na prática, raramente são úteis. Se você estiver querendo fazer uma fusão de muitos para muitos, você deve repensar o que você está fazendo. Muitas vezes, o que você realmente precisa fazer é identificar e corrigir identificadores duplicados e, em seguida, sua fusão funcionará como um para um ou um para muitos. Em todas as fusões bem discutidas, o Stata combina observações que têm o mesmo valor de uma variável-chave, tipicamente um ID. Você também pode combinar com base em variáveis ​​múltiplas (por exemplo, combinar dados para o mesmo estado e ano). Em uma mesclagem de um para muitos ou muitos para um, é o identificador para as unidades de nível dois que é a variável chave (por exemplo, identificação doméstica, não identificação individual). É muito importante que a variável chave tenha o mesmo formato em ambos os conjuntos de dados. Se uma observação em um conjunto de dados não corresponder com uma observação no outro, serão dados valores faltantes para as variáveis ​​do outro conjunto de dados. Uma vez que a viabilidade de um projeto de pesquisa muitas vezes depende de quantas observações realmente se fundem (por exemplo, quantas pessoas da onda uma da pesquisa podem ser encontradas na onda dois), a Stata oferece ferramentas para descobrir quantas observações realmente se fundiram e para examinar aquelas que Não foi. Se uma variável existir em ambos os conjuntos de dados, os valores do conjunto de dados mestre serão mantidos e os valores do conjunto de dados de uso serão descartados. Ocasionalmente, isso é o que você quer, mas é mais provável que seja um erro. Em geral, você deve configurar seus dados de modo que as únicas variáveis ​​dos arquivos a serem mesclados tenham em comum as variáveis-chave. A sintaxe para uma mesclagem é: keyvars de tipo de mesclagem usando conjunto de dados O tipo deve ser 1: 1 (one-to-one), 1: m (one to many), m: 1 (many-to-one) ou m: M (muitos a muitos) keyvars é a variável chave ou as variáveis ​​e o conjunto de dados é o nome do conjunto de dados que você deseja mesclar. Um exemplo de combinação de conjuntos de dados Os exemplos incluem vários arquivos que contêm informações de estudantes fictícios de 2007. scores. dta contém os resultados dos alunos em um teste padronizado, demographics. dta contém informações demográficas sobre eles e professores. dta contém informações sobre seus professores. Dê um momento para ver cada arquivo e, em seguida, comece um arquivo do que carrega pontuação. Neste conjunto de dados, cada observação representa um aluno. Navegue e você verá que você possui uma ID de estudante (ID), uma ID de professor (professor) e uma pontuação para cada uma. Sua primeira tarefa é adicionar informações demográficas. Em dados demográficos. dta cada observação também representa um aluno, sendo as variáveis ​​identidade e raça. Assim, este é um trabalho para uma fusão um-para-um e a variável chave é id. Mesclar identificação 1: 1 usando dados demográficos. A Stata informará que todas as 60 observações corresponderam. Ele também criará uma variável chamada de mesclagem. Um na fusão significa que uma observação só veio do conjunto de dados mestre dois meios que só veio do conjunto de dados de uso e um três significa uma observação com êxito e, portanto, veio de ambos. Neste caso, vemos que todas as observações correspondem e, portanto, têm uma fusão igual a três, então não há necessidade de manter a variável. Na verdade, precisamos soltá-lo (ou renomeá-lo) antes de fazer outras fusões: em seguida, adicione informações sobre professores. Nos professores. dta cada observação representa um professor, e cada professor tem muitos alunos. Isso faz com que esta seja uma fusão de vários-para-um (uma vez que muitos estudantes estão atualmente na memória e o professor está no conjunto de dados de uso). A variável chave não é id. Uma vez que se refere aos alunos, mas professora: mesclar m: 1 professor usando professores Novamente, todas as 60 observações mescladas corretamente, para que você possa inserir a fusão. Combinando dados do painel Agora suponha que você estivesse rastreando esses alunos por vários anos. O conjunto de dados panel2007.dta contém uma versão simplificada deste conjunto de dados: apenas id e score. O conjunto de dados panel2008.dta tem as mesmas variáveis ​​para um ano diferente. Como você os combinaria? A maneira correta de combiná-los depende da estrutura de dados que deseja. Este é um dado hierárquico onde uma unidade de nível dois é um aluno e uma unidade de nível um é um dado de estudantes para um determinado ano. Assim, pode ser representado de forma ampla (uma observação por aluno), ou em forma longa (uma observação por aluno por ano). Para colocar os dados em forma longa, simplesmente empilhe os dois conjuntos de dados usando anexar. No entanto, você precisará saber qual ano representa cada observação. Para fazer isso, adicione uma variável de ano para o conjunto de dados, com o valor 2007 para os dados de 2007 e o valor de 2008 para os dados de 2008. Você pode fazê-lo com o seguinte arquivo: limpe tudo definido mais fora log de captura fechar log usando combine1.log, substituir usar painel2007 gen ano2007 salvar painel2007apartir usar painel2008 gen ano2008 anexar usando painel2007appenar salvar appendedData, substituir Para colocar os dados em forma ampla, Faça uma mescla um-para-um com id como a variável-chave. Mas primeiro você precisa alterar os nomes das variáveis. Lembre-se de que, de forma ampla, são os nomes de variáveis ​​que lhe dizem a qual unidade de nível um está falando. Então, em vez de pontuação. Você precisa de pontuação2007 e anotação2008. Limpe todo o conjunto mais fora log de captura fechar log usando combine2.log, substituir use painel2007 renomear pontuação score2007 salvar painel2007merge usar painel2008 renomear pontuação score2008 merge 1: 1 identificação usando panel2007merge salvar fusionedData, substituir Esta vez você verá que uma observação não corresponde. Você pode ver qual digitando: O número 55 do aluno não estava no painel2008 e, portanto, não poderia ser combinado. Como resultado, não temos idéia do que o seu teste foi em 2008. Infelizmente, isso é muito comum. Os alunos se mudam para fora dos distritos escolares entre os testes o tempo todo. Se toda a sua agenda de pesquisa depende de ambos os resultados, você precisará soltar as observações que não existem em ambos os conjuntos de dados. Você pode fazer isso neste momento, adicionando: drop if merge3 Você também pode especificar quais observações devem ser mantidas diretamente no comando de mesclagem: merge 1: 1 id using panel2007merge, keep (match) keep (match) significa apenas manter as observações que correspondem . As alternativas são mestres e usando. E você pode listar mais de um. Por exemplo, para manter as observações que correspondem e as observações que só vêm do conjunto de dados mestre, ao mesmo tempo que descarta observações que só vêm do conjunto de dados de uso, você diz manter (partida principal). Problemas comuns com Merges Merges irá descobrir todos os tipos de problemas com o seu conjunto de dados (e se eles não forem fixados, a fusão irá introduzir novos). Aqui estão dois comuns e como corrigi-los: Variáveis-chave armazenadas em diferentes formatos Enquanto a Stata combinará felizmente com diferentes tipos de números (por exemplo, ints e flutuadores), ele não pode combinar números e strings. Os IDs podem ser armazenados como um tanto (desde que você escolha um tipo numérico que tenha precisão suficiente212 Consulte Trabalhar com dados) e não é incomum achar que seus conjuntos de dados armazenam o ID de maneiras diferentes. Nesse caso, geralmente é melhor converter os números em strings: gen idStringstring (id) drop id rename idString id A função string () leva um número e converte-o em uma string. Você pode dar-lhe um segundo argumento contendo o formato em que o número deve ser quotwrittenquot se necessário. Duplicar IDs Se você tentar fazer uma mesclagem e receber uma mensagem de erro, como identificação quotvariable, não identifica apenas as observações nas informações mestre, isso significa que você tem IDs duplicadas no conjunto de dados mencionado. Este problema precisa ser corrigido antes de prosseguir. Não basta alterar o tipo de fusão para o conjunto de dados relevantes de quotonequot para quotmanyquot na esperança de fazer desaparecer a mensagem de erro8212. O conjunto de dados resultante não faz sentido para as observações afetadas. Uma possível fonte de duplicatas é um erro de arredondamento devido a salvar os IDs em um tipo de variável inapropriado. Neste caso, você precisará voltar aos dados originais e garantir que os identificadores sejam armazenados como um tipo que não os arredondará, como longo, duplo ou string. Observe que, para fins de fusão, os valores em falta são tratados como qualquer outro valor. Se você tiver observações com IDs perdidos, a Stata os contará como duplicatas. Você provavelmente terá que soltá-los antes da fusão. Mas, na maioria das vezes, as IDs duplicadas resultam de erros nos dados. Você precisará fazer algo sobre eles antes de poder executar sua mesclagem. Inicie um arquivo do que carrega o conjunto de dados mergeerror. Este conjunto de dados contém alunos, mas alguns deles têm IDs duplicados que precisam ser corrigidos. Você pode ver quantos problemas você tem com o relatório de duplicatas: duplicar o id do relatório. Isso indica quantas observações têm o mesmo valor de id. A saída diz que nenhuma ID aparece mais de duas vezes, mas doze observações têm IDs duplicadas. Para um exame mais aprofundado, crie uma variável que lhe indique quantas cópias existem de cada ID: bysort id: gen copiesN Então, você pode observar as observações do problema com: browse si copiesgt1 Para as observações com id igual a 9, 26 e 33, as duas observações com o mesmo ID são idênticas. Isso sugere que o mesmo aluno tenha sido inserido duas vezes e você pode resolver o problema simplesmente deixando cair as observações extras. Faça isso com: Observe que, ao contrário do comando de relatório duplicado que você executou anteriormente, esse comando não possui uma lista de var. Isso significa que ele apenas cai observações duplicadas se eles tiverem o mesmo valor para todas as variáveis, e não apenas id. Você pode dar-lhe um varlist para que ele coloque observações se apenas essas variáveis ​​têm os mesmos valores, mas tenha muito cuidado ao fazê-lo. Neste ponto, em problemas complexos, você pode querer soltar a variável de cópias que criou anteriormente e recriá-la para navegar se copygt1 não mostrará mais as observações que você já corrigiu, mas não há necessidade nesse conjunto de dados. Para as observações com id igual a 64, 74 e 94, as outras variáveis ​​mostram que as observações com o mesmo ID não são a mesma pessoa. Este é um grande problema para a fusão: você não pode ter certeza de qual quotstudent 64quot neste conjunto de dados vai com o quotstudent 64quot no outro conjunto de dados hipotético. Adicionando mais variáveis ​​pode ajudar. Por exemplo, neste caso, a fusão por ID e raça permitiria que você corresponda corretamente os dois assuntos com id igual a 94. Fusão por id. corrida. E o grau permitiria que você combinasse corretamente os assuntos com id igual a 74. Basta ter em mente que, se o conjunto de dados que você queria fundir com este fosse para o ano lectivo seguinte, como em nosso exemplo anterior, você deve subtrair um de seus Primeiro grau. Se você optar por seguir esta rota, recrie a variável de cópias usando o conjunto completo de variáveis ​​que você planeja combinar no prefixo e veja quantas duplas são deixadas. Nada ajudará com as duas observações com identidade igual a 64, e em um conjunto de dados maiores é menos provável que a correspondência por mais algumas variáveis ​​permita que você identifique os assuntos de forma exclusiva. Nesses casos, você provavelmente precisará soltar todas as observações que você não pode identificar de forma exclusiva, já que você não pode combinar com elas de forma confiável. Você pode fazê-lo com: drop if copiesgt1 Uma maneira alternativa de combinar conjuntos de dados em forma ampla é primeiro anexá-los e, em seguida, remodelar. Combine o painel2007 e o painel2008 em forma ampla usando este método. (Solução) Se você combinar os dois anos de dados em forma longa, use anexar. Como você pode encontrar a observação que não aparece em 2008 (Solução) Combine error2007.dta e error2008.dta, combinando-a na forma ampla, corrigindo quaisquer problemas que você encontrar. Em seguida, anexe os dois conjuntos de dados e tente localizar os mesmos problemas. (Solução) Última revisão: 12292015

No comments:

Post a Comment