Fusionar strings 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 mais antigas serão removidas ou arquivadas de tal forma que 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 list para ver se isso funcionou corretamente. O append funcionou corretamente. Os pais e as mães são empilhados juntos em um arquivo. Mas, há um pequeno problema. Nós não podemos dizer os 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 juntos, 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. Salvar o arquivo chamando-lhe dads1. Aqui nós tornamos a variável momdad para o arquivo de dados das mães. Gravamos o arquivo chamando-o moms1. Agora, vamos acrescentar dads1 e moms1 juntos. Agora, quando listamos os dados, a variável momdad mostra quem são as mães e os pais. Combinar fusão Outra forma de combinar arquivos de dados é 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 correspondência. Deixa para ter um olhar nos paizinhos e no arquivo do faminc. Nós queremos combinar os arquivos de dados para que eles se parecem com isso. 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. ordenar pais em famid e salvar esse arquivo (chamando-lhe dads2). 2. classifique o faminc em famid e excepto esse arquivo (chamando o faminc2). 3. use o arquivo dads2. 4. Misture o arquivo dads2 com o arquivo faminc2 usando famid para combiná-los. Aqui estão os 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 Salvar esse arquivo como dads3 2. classificar crianças em famid e salvar que Arquivo como kids3 3. use o arquivo dads3 4. mescla o arquivo dads3 com o arquivo kids3 usando famid para combiná-los. As 4 etapas são mostradas abaixo. 1. Classifique o arquivo de dados dos pais em famid e salve esse arquivo como dads3. 2. Classifique o arquivo de dados de crianças no famid e salve esse arquivo como kids3. 3. Utilize o ficheiro 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 classificamos os dados sobre famid e birth. Como você vê, isso é basicamente o mesmo que um um para um mesclar. Você pode se perguntar se a ordem dos arquivos na instrução de mesclagem é relevante. Aqui, trocamos a ordem dos arquivos e os resultados são os mesmos. A única diferença é a ordem dos registros após a mesclagem. Exemplo de exemplo de adição Exemplo de etapas de mesclagem de mesclagem (um para um e um para muitos) Programa de exemplo de mesclagem de mesclagem O conteúdo deste site não deve ser interpretado como endosso de nenhum site, livro ou produto de software específico pelo University of California. Stata for Researchers: Combinando conjuntos de dados Esta é a segunda parte da série Stata for Researchers. 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: 12292017
Comments
Post a Comment