Skip to main content

Movendo Média Código Sas


Im um novato de SAS e Im curioso se a seguinte tarefa puder ser feita muito mais simples como está atualmente em minha cabeça. Eu tenho os seguintes meta metadados (simplificados) em uma tabela chamada userdatemoney: Usuário - Data - Dinheiro com vários usuários e datas para cada dia do calendário (nos últimos 4 anos). Os dados são ordenados pelo usuário ASC e data ASC, dados de exemplo se parece com isto: Agora eu quero calcular uma média móvel de cinco dias para o dinheiro. Eu comecei com o apprach muito popular com a função lag () como este: como você vê, o problema com este método ocorre se lá se a etapa de dados é executado em um novo usuário. Aron iria obter alguns valores defasados ​​de Anna, que é claro que não deveria acontecer. Agora a minha pergunta: Tenho certeza que você pode lidar com o usuário mudar adicionando alguns campos extras como laggeduser e redefinindo as variáveis ​​N, Soma e média se você notar tal interruptor mas: Isso pode ser feito de uma maneira mais fácil Talvez usando o Por Cláusula de qualquer maneira Obrigado por suas idéias e ajuda Eu acho que a maneira mais fácil é usar PROC EXPAND: E como mencionado no comentário Johns, é importante lembrar sobre valores em falta (e sobre o início e fim observações também). Eu adicionei SETMISS opção para o código, como você deixou claro que você deseja zerofy valores em falta, não ignorá-los (comportamento padrão MOVAVE). E se você quiser excluir as primeiras 4 observações para cada usuário (uma vez que eles não têm pré-história suficiente para calcular a média móvel 5), você pode usar a opção TRIMLEFT 4 dentro TRANSFORMOUT (). O código de amostra na guia Código Completo ilustra como calcular a média móvel de uma variável através de um conjunto de dados inteiro, sobre as últimas N observações em um conjunto de dados ou sobre as últimas N observações dentro de um BY - grupo. Esses arquivos de amostra e exemplos de código são fornecidos pelo SAS Institute Inc. como é sem garantia de qualquer tipo, expressa ou implícita, incluindo mas não limitado às garantias implícitas de comercialização e adequação a um propósito específico. Os beneficiários reconhecem e concordam que o SAS Institute não se responsabiliza por quaisquer danos decorrentes da utilização deste material. Além disso, o SAS Institute não fornecerá suporte para os materiais contidos aqui. Esses arquivos de amostra e exemplos de código são fornecidos pelo SAS Institute Inc. como é sem garantia de qualquer tipo, expressa ou implícita, incluindo mas não limitado às garantias implícitas de comercialização e adequação a um propósito específico. Os beneficiários reconhecem e concordam que o SAS Institute não se responsabiliza por quaisquer danos decorrentes da utilização deste material. Além disso, o SAS Institute não fornecerá suporte para os materiais aqui contidos. Calcule a média móvel de uma variável através de um conjunto de dados inteiro, nas últimas N observações em um conjunto de dados ou nas últimas N observações dentro de um grupo BY. Começando na versão 6.08 do SAS System, PROC EXPAND no software SASETS pode Ser usado para fazer uma variedade de transformações de dados. Essas transformações incluem: leads, atrasos, médias móveis ponderadas e não ponderadas, somas móveis e somas cumulativas, para citar apenas algumas. Muitas novas transformações foram adicionadas na versão 6.12, incluindo especificações separadas para médias centradas e para trás. Essas novas transformações tornaram necessário modificar a sintaxe de algumas das transformações suportadas antes da Versão 6.12. Exemplos de como especificar a sintaxe para médias centradas e para trás movendo usando a versão 6.11 e anteriores e versão 6.12 e posterior são fornecidos abaixo. PROC EXPAND pode calcular uma média móvel centrada ou uma média móvel para trás. Uma média móvel centrada em 5 períodos é calculada pela média de um total de 5 valores consecutivos da série (o valor do período corrente para além dos dois valores imediatamente anteriores e dois valores imediatamente a seguir ao valor actual). Uma média de retrocesso de 5 períodos é calculada pela média do valor do período corrente com os valores dos 4 períodos imediatamente anteriores. A sintaxe a seguir ilustra como usar a especificação TRANSFORM (MOVAVE n) para calcular uma média móvel centrada em 5 períodos usando a Versão 6.11 ou anterior: Para calcular uma média móvel de retrocesso em período n utilizando a Versão 6.11 ou anterior, use TRANSFORM (MOVAVE) N LAG k) especificação, onde k (n-1) 2 se n é ímpar ou onde k (n-2) 2 se n é par. A sintaxe a seguir ilustra como usar a especificação TRANSFORM (CMOVAVE n) para calcular uma média móvel centrada em 5 períodos usando a Versão 6.12 ou mais recente. Mais tarde: A seguinte sintaxe semelhante ilustra como usar a especificação TRANSFORM (MOVAVE n) para calcular uma média de retrocesso de 5 períodos usando a Versão 6.12 ou posterior: Para obter mais informações, consulte Operações de Transformação no capítulo EXPAND do Guia do Usuário do SASETS. Se você não tiver acesso ao SASETS, poderá calcular uma média móvel na etapa DATA, conforme ilustrado neste programa de exemplo. Sistema Operacional e Informações de Liberação

Comments