Wednesday 25 April 2018

Mesclar vários conjuntos de dados no stata forex


Stata para pesquisadores: combinando conjuntos de dados Esta é a parte oito da série Stata para pesquisadores. Para obter uma lista de tópicos cobertos por esta série, consulte a Introdução. Se você é novo a Stata nós recomendamos altamente 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 de errar. Antes de combinar conjuntos de dados, certifique-se de entender a estrutura de ambos os conjuntos de dados ea lógica do modo como você os está combinando. Caso contrário, você pode acabar com um conjunto de dados que você acha que está pronto para análise, mas é realmente absoluto absurdo. Stata tenta garantir que você tenha pensado no que você está fazendo, mas não pode dizer o que faz sentido eo que não faz. O Stata sempre funciona com um conjunto de dados por vez, então você sempre combinará o conjunto de dados na memória (o conjunto de dados mestre) com outro conjunto de dados no disco (chamado de conjunto de dados, por razões que serão claras quando você vir A sintaxe). Adicionando Conjuntos de Dados Stata chama-o anexando 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 maioritariamente 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 é para realizar um apêndice é simples: carregar o conjunto de dados mestre e, em seguida, digite: anexar usando conjunto de dados onde conjunto de dados é o nome do conjunto de dados que você 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 fusão 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 eles. Por exemplo, você pode mesclar as respostas que as pessoas deram na onda 1 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). Essas fusões fazem sentido quando você tem 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 domicílios com informações sobre os indivíduos que vivem nesses domicílios. Em princípio, há também fusões muitos-para-muitos. Na prática, raramente são úteis. Se você está procurando fazer uma fusão muitos-para-muitos, você deve repensar o que está fazendo. Muitas vezes, o que você realmente precisa fazer é identificar e corrigir identificadores duplicados e, em seguida, sua mesclagem 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 várias variáveis ​​(por exemplo, combinar dados para o mesmo estado e ano). Em uma mesclagem um-para-muitos ou muitos-para-um, é o identificador para as unidades de nível dois que é a variável-chave (por exemplo, ID de agregado familiar, e 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 coincide 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 existir uma variável 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 ​​que os arquivos a serem incorporados 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 para muitos) keyvars é a variável-chave ou variáveis ​​eo 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 contendo informações de estudantes fictícios de 2007. scores. dta contém as pontuações dos alunos em um teste padronizado, demographics. dta contém informações demográficas sobre eles e teachers. dta contém informações sobre seus professores. Tome um momento para olhar para cada arquivo, em seguida, iniciar um arquivo do que carrega as pontuações. 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 as informações demográficas. Em demographics. dta cada observação também representa um aluno, com as variáveis ​​sendo id e raça. Assim, este é um trabalho para uma fusão um-para-um ea variável-chave é id. Mesclar ID 1: 1 usando dados demográficos Stata relatará que todas as 60 observações correspondem. Ele também criará uma variável chamada merge. 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 combinadas e, portanto, ter fusão igual a três, por isso 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. Em professores. dta cada observação representa um professor, e cada professor tem muitos alunos. Isso faz com que este um muitos-para-um mesclar (uma vez que os muitos alunos estão atualmente na memória e um professor está no conjunto de dados usando). A variável chave não é id. Desde que se refere aos alunos, mas professor: mesclar m: 1 professor usando professores Novamente, todas as observações 60 fundiu corretamente, para que você possa soltar a fusão. Combinando dados do painel Agora suponha que você estava 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 pontuação. O conjunto de dados panel2008.dta tem as mesmas variáveis ​​para um ano diferente. Como você combiná-los A maneira correta de combiná-los depende da estrutura de dados que você deseja. Trata-se de dados hierárquicos em que uma unidade de nível dois é um aluno e uma unidade de nível um é um dado de estudantes para um determinado ano. Assim, ele pode ser representado em 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 empilhar os dois conjuntos de dados usando anexar. No entanto, você precisa saber que ano cada observação representa. Para fazer isso, adicione uma variável de ano para ambos os conjuntos de dados, com o valor de 2007 para os dados de 2007 eo valor de 2008 para os dados de 2008. Você pode fazê-lo com o seguinte do arquivo: limpar tudo definido mais fora log de captura fechar log usando combinar1.log, substituir use panel2007 gen ano2007 salvar painel2007append uso panel2008 gen ano2008 anexar usando painel2007append salvar appendedData, substituir Para colocar os dados em forma ampla, Fazer um um-para-um mesclar 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 score2007 e score2008. Limpar tudo definir mais fora log de captura fechar log usando combinar. log, substituir use panel2007 renomear pontuação score2007 salvar panel2007merge usar painel2008 renomear pontuação2008 fundir id 1: 1 usando panel2007merge salvar mergedData, 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 sua pontuação de teste foi em 2008. Infelizmente, isso é muito comum. Os alunos 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 fazê-lo neste ponto adicionando: drop if merge3 Você também pode especificar quais observações devem ser mantidas diretamente no comando de mesclagem: merge ID 1: 1 usando panel2007merge, keep (match) keep (match) significa apenas manter observações que correspondam . 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 seu conjunto de dados (e se theyre não fixa 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 você receber uma mensagem de erro como id quotvariable não identifica exclusivamente observações no mestre dataquot isso significa que você tem identificações duplicadas no conjunto de dados mencionados. Este problema precisa ser corrigido antes de prosseguir. Não basta alterar o tipo de mesclagem para o conjunto de dados relevantes de quotonequot para quotmanyquot na esperança de fazer a mensagem de erro ir away8212 o conjunto de dados resultante não fará sentido para as observações afetadas. Uma possível fonte de duplicatas é o erro de arredondamento devido a salvar os IDs em um tipo de variável inadequado. 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 mesclagem, os valores em falta são tratados como qualquer outro valor. Se você tiver observações com IDs ausentes, Stata as contará como duplicatas. Você provavelmente terá que soltá-los antes da fusão. Mas na maioria das vezes os IDs duplicados resultam de erros nos dados. Você precisará fazer algo sobre eles antes de poder realizar a mesclagem. Inicie um arquivo do que carrega o conjunto de dados mergeerror. Esse 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: id de relatório de duplicatas Isso informa quantas observações têm o mesmo valor de id. A saída informa que nenhum ID aparece mais de duas vezes, mas doze observações têm identificações duplicadas. Para um exame mais aprofundado, crie uma variável que informa quantas cópias existem de cada ID: bysort id: gen copiesN Então você pode olhar apenas as observações do problema com: browse if 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 foi inserido duas vezes e você pode corrigir o problema simplesmente deixando cair as observações extras. Faça isso com: Note que, ao contrário do comando de relatório de duplicatas executado anteriormente, este comando não possui uma varlist. Isso significa que ele só descarta observações duplicadas se tiverem o mesmo valor para todas as variáveis, não apenas id. Você pode dar uma varlist para que ele caia 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ê igualasse corretamente os assuntos com id igual a 74. Apenas mantenha na mente que se o jogo de dados você quisesse fundir com este era para o ano escolar subseqüente como em nosso exemplo precedente você teve que subtrair um de seu 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. Em tais casos, você provavelmente precisará descartar todas as observações que você não pode identificar de forma única, uma vez que você não pode corresponder a qualquer deles. 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 painel2007 e painel2008 em forma ampla usando este método. (Solução) Se você combinar os dois anos de dados em forma longa usando 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: 12292017Em Stata, como faço para mesclar dois conjuntos de dados Para mesclar dois conjuntos de dados no Stata, primeiro classificar cada conjunto de dados sobre as variáveis-chave sobre as quais a fusão será baseada. Em seguida, use o comando. merge seguido por uma lista de variáveis-chave e conjunto (s) de dados. No Stata versão 11 e posterior: mesge 1: 1 varlist usando o nome do arquivo, opções Se você estiver usando o Stata versão 10 ou mais, omita a especificação 1: 1. As observações em cada conjunto de dados devem ser exclusivas na correspondência de correspondência de um para um. Suponha que temos duas variáveis-chave id e nome em dois conjuntos de dados stat e math. O código a seguir classifica e salva o conjunto de dados estatísticos e, em seguida, classifica o conjunto de dados matemáticos. Em seguida, enquanto o conjunto de dados de matemática ainda está na memória, ele mescla (usando o conjunto de dados estatísticos) nas variáveis ​​de chave id e name: Se dois conjuntos de dados compartilharem variáveis ​​além das variáveis-chave, use a opção update para substituir valores ausentes em O arquivo mestre (na memória) com os valores não faltantes correspondentes no arquivo secundário. Use, update replace para substituir valores não faltantes no arquivo mestre com os valores não faltantes correspondentes no arquivo secundário. Para usar o menu drop-down no Stata versão 11 e posterior: Dataxa0gt Combinexa0Datasetsxa0gt Mergexa0Twoxa0Datasets Se você tiver dúvidas sobre o uso de software estatístico e matemático na Indiana University, entre em contato com Research Analytics. O Research Analytics está localizado no campus da IU Bloomington na Woodburn Hall 200 funcionários estão disponíveis para consulta de segunda a sexta-feira, das 9h às 12h e mediante marcação.

No comments:

Post a Comment