Estou tentando criar variáveis dummy em Stata que são 1 se alguma das variáveis dx1 a dx25 começar com uma seqüência específica. Eu sei que eu posso fazer isso usando algo como o seguinte, mas para todas as variáveis dx 25: Eu, então, criar outros manequins iguais a 1 se algum dos dx s começar com estes: Eu tenho tentado descobrir um mais eficiente e elegante Maneira de fazer isso. Exemplo de estrutura de dados (vou mantê-lo para dx1 através de dx5 aqui por razões de espaço): perguntou Jun 16 14 at 2:12 Eu primeiro tentar fazer as coisas funcionarem. Depois disso, se é muito ineficiente para as minhas necessidades (e às vezes se esteticamente desagradável), eu tento trabalhar as coisas de uma maneira diferente. Seguindo sua linha de pensamento, por que não tentar loops: Im usando as cordas de interesse para nomear as variáveis indicador (você chamá-los de manequim). Como algumas strings fariam nomes Stata ilegais, eu uso a função strtoname (). Esta convenção de nomenclatura não é obrigatória, é claro. Há mais avaliação em curso do que realmente necessário, mas pode ser suficiente como é. Para cada elemento do li local. Nenhuma avaliação mais precisa ser feita após a primeira substituição é executada. Mas o código verifica todas as variáveis dx. Talvez haja uma maneira melhor de alcançar seu resultado final, mas você não diz o que é isso. Este parece ser apenas um passo intermediário. Executar help ltcommandorfunctiongt para obter detalhes sobre a sintaxe específica. (Observe que em seu post original é mais eficiente do que porque Stata não precisa verificar a condição if é atendida para cada observação no banco de dados. Ele simplesmente lista as primeiras 20 observações.) Tostring isnt uma função é um comando, e em Stata Os dois são bastante distintos. Nada além de conjeturas leva à sintaxe que você tentou. Deveria trabalhar. Mas tostring é apenas um wrapper para a função string () e também deve trabalhar para obter variáveis de seqüência de caracteres. Mas os valores da cadeia seria 11. 99 e essa é a abordagem errada. Dadas as etiquetas de valor, você está bem com essa variável como numérica. Se você realmente quer uma variável de seqüência, você precisa decodificar. Não tostring. EDIT: A sintaxe tostring () só funcionaria se tostring () fosse uma função, o que não é. A resposta original, portanto, explicou por que o código OPs era errado, bem como explicar como fazê-lo corretamente. Eu soletrei para fora nesta edição como usar decode. Welcome ao instituto para a pesquisa e a instrução de Digitas Módulo de aprendizagem de Stata Criando e recoding variáveis Este módulo mostra como criar e recode variáveis. No Stata você pode criar novas variáveis com generate e você pode modificar os valores de uma variável existente com replace e com recode. Computação de novas variáveis usando gerar e substituir Vamos usar os dados automáticos para os nossos exemplos. Nesta seção, veremos como calcular variáveis com generate e replace. O comprimento variável contém o comprimento do carro em polegadas. Abaixo vemos estatísticas resumidas de comprimento. Vamos usar o comando generate para fazer uma nova variável que tem o comprimento em pés em vez de polegadas, chamado lenft. Devemos enfatizar que gerar é para criar uma nova variável. Para uma variável existente, você precisa usar o comando replace (não gerar). Como mostrado abaixo, usamos replace para repetir a atribuição para lenft. A sintaxe de gerar e substituir são idênticas, exceto: - gerar trabalhos quando a variável ainda não existe e dará um erro se a variável já existir. - substituir obras quando a variável já existe, e dará um erro se a variável ainda não existe. Suponha que queremos fazer uma variável chamada comprimento2 que tem comprimento ao quadrado. Ou podemos querer fazer loglen que é o log natural de comprimento. Permite obter a média eo desvio padrão de comprimento e podemos fazer Z-scores de comprimento. A média é 187,93 eo desvio padrão é 22,27, portanto zlength pode ser calculado como mostrado abaixo. Com gerar e substituir você pode usar - para adição e subtração você pode usar / para multiplicação e divisão que você pode usar para expoentes (por exemplo, length2) você pode usar () para controlar a ordem das operações. Recodificação de novas variáveis usando gerar e substituir Suponha que queríamos quebrar o mpg em três categorias. Vamos olhar para uma tabela de mpg para ver onde podemos desenhar as linhas para essas categorias. Permite converter mpg em três categorias para ajudar a tornar isso mais legível. Aqui nós convertem mpg em três categorias usando gerar e substituir. Vamos usar tabulate para verificar se isso funcionou corretamente. Na verdade, você pode ver que um valor de 1 para mpg3 vai de 12-18, um valor de 2 vai de 19-23, e um valor de 3 vai de 24-41. Agora, podemos usar mpg3 para mostrar uma crosstab de mpg3 por estrangeiros para contrastar a quilometragem dos carros estrangeiros e domésticos. O crosstab acima mostra que 21 dos carros domésticos caem na categoria de alta quilometragem, enquanto 55 dos carros estrangeiros se encaixam nesta categoria. Recodificação de variáveis usando recode Existe uma maneira mais fácil de recodificar mpg em três categorias usando generate e recode. Primeiro, fazemos uma cópia de mpg. Chamando-o mpg3a. Em seguida, usamos recode para converter mpg3a em três categorias: min-18 em 1, 19-23 em 2 e 24-max em 3. Permite verificar se isso funcionou corretamente. Vemos que funcionou perfeitamente. Recodifica com se vamos criar uma variável chamada mpgfd que avalia a quilometragem dos carros em relação à sua origem. Seja esta uma variável 0/1 chamada mpgfd, que é: 0 se abaixo da mediana de mpg para seu grupo (estrangeiro / doméstico) 1 se for / acima da mediana de mpg para seu grupo (estrangeiro / doméstico). Vemos que a mediana é de 19 para o doméstico (foreign0) carros e 24,5 para o estrangeiro (foreign1) carros. Os comandos de geração e recodificação abaixo recodificam mpg em mpgfd com base na mediana de carro doméstico para os carros domésticos, e com base na mediana de carro estrangeira para os carros estrangeiros. Podemos verificar usando isso abaixo, eo valor recodificado mpgfd parece correto. Sumário Crie uma nova variável que é comprimento dividido por 12. Mude os valores de uma variável existente chamada lenft. Recode mpg em mpg3. Tendo três categorias usando gerar e substituir if. Recode mpg em mpg3a. Tendo três categorias, 1 2 3, usando gerar e recodificar. Recode mpg em mpgfd. Tendo duas categorias, mas usando diferentes pontos de corte para carros estrangeiros e nacionais. O conteúdo deste site não deve ser interpretado como um endosso de qualquer site, livro ou produto de software específico pela Universidade da Califórnia.
No comments:
Post a Comment