Sunday 28 May 2017

Sas Moving Average Array


Eu tenho um conjunto de dados a seguir: CustID NGIF RAMN RFA1 2001 6 52 1 2002 1 23 1 2003 8 99 1 2004 20 100 4 2005 11 114 3 2006 9 138 1 2007 7 105 3 2008 15 190 2 2009 27 297 1 2010 22 207 1 2011 19 171 2 Eu quero calcular para cada nível RFA1 (que é 1-4), a média (Total RAMN para um nível RFA1 contagem total desse nível RFA1) usando matrizes. Sem arrays, Se eu dividir e fazer, eu obter resultado para o nível individual. A seguir está o código: Meu problema é Como faço para escrever esse código para todos os 4 níveis de RFA1 usando Matrizes. Pediu 23 de setembro 14 às 3:49 Obrigado pela sua resposta Joe. Eu tentei isso com PROC MEANS e sim eles estão fazendo o que é necessário. Mas eu estou aprendendo SAS e mais fresco para ele, e quero aprender arrays também. Por isso, estou tentando resolvê-lo usando Arrays. Eu acho que com 39amp39 estou inicializando três variáveis ​​em uma frase com base na condição if. Por favor, perdoe-me por minha ignorância e deixe-me saber onde estou indo errado. Ndash Charlotte Sep 23 14 at 14: 51 Ver MACMA1 na biblioteca de exemplo SASQC O exemplo anterior ilustra como você pode criar gráficos de média móvel usando dados brutos (medições de processo). Contudo, em muitas aplicações os dados são fornecidos como estatísticas de resumo de subgrupos. Este exemplo ilustra como você pode usar a instrução MACHART com dados desse tipo. O seguinte conjunto de dados (CLIPSUM) fornece os dados do exemplo anterior em forma resumida: A lista de CLIPSUM é mostrada na Figura 21.3. Há exatamente uma observação para cada subgrupo (note que os subgrupos ainda estão indexados por DAY). A variável GAPX contém as médias do subgrupo, a variável GAPS contém os desvios-padrão do subgrupo ea variável GAPN contém os tamanhos de amostra do subgrupo (estes são todos os cinco). O conjunto de dados CLIPSUM Figura 21.3: Conjunto de dados de resumo CLIPSUM Você pode ler este conjunto de dados especificando-o como um conjunto de dados HISTORY na instrução PROC MACONTROL, da seguinte maneira: O gráfico de média móvel resultante é mostrado na Figura 21.4. Como a opção LINEPRINTER é especificada na instrução PROC MACONTROL, a saída da impressora de linha é produzida. O asterisco () especificado em aspas simples após a variável de subgrupo indica o caractere usado para plotar pontos. Esse personagem deve seguir um sinal de igualdade. Observe que GAP não é o nome de uma variável SAS no conjunto de dados, mas é, em vez disso, o prefixo comum para os nomes das três variáveis ​​SAS GAPX, GAPS e GAPN. O sufixo caracteres X. S. E N indicam a média. desvio padrão . E tamanho da amostra. respectivamente. Assim, você pode especificar três variáveis ​​de resumo de subgrupos em um conjunto de dados HISTÓRICO com um único nome (GAP), que é referido como o processo. As variáveis ​​GAPX, GAPS e GAPN são todas necessárias. O nome DAY especificado após o asterisco é o nome da variável de subgrupo. Em geral, um conjunto de dados de entrada HISTÓRICO usado com a instrução MACHART deve conter as seguintes variáveis: subgrupo variável subgrupo média variável subgrupo desvio padrão variável subgrupo variável de tamanho da amostra Além disso, um conjunto de dados de entrada de HISTÓRICO utilizado com a instrução MACHART deve conter as seguintes variáveis: , Os nomes das variáveis ​​de média de subgrupo, desvio padrão e tamanho de amostra devem começar com o nome do processo especificado na instrução MACHART e terminar com os caracteres de sufixo especiais X. S. e n . respectivamente. Se os nomes não seguem esta convenção, você pode usar a opção RENAME na instrução PROC MACONTROL para renomear as variáveis ​​para a duração da etapa de procedimento MACONTROL. Em resumo, a interpretação do processo depende do conjunto de dados de entrada. Se os dados brutos são lidos usando a opção DATA (como no exemplo anterior), processo é o nome da variável SAS que contém as medições do processo. Se os dados de resumo forem lidos usando a opção HISTORY (como neste exemplo), process é o prefixo comum para os nomes das variáveis ​​que contêm as estatísticas de resumo. Para obter mais informações, consulte 34HISTORY Data Set34. 13 13Movendo média com intervalo de datas média móvel com intervalo de datas média móvel com intervalo de datas Im novo para SAS, e estou tendo alguns problemas com o cálculo da média móvel com base em datas e agrupamentos dentro do conjunto de dados. Basicamente, estou tentando calcular a média móvel para cada observação com base nos últimos 90 dias. Cada observação tem uma data. Eu também preciso agrupá-los para que a média móvel é apenas com base no grupo. Em outras palavras, se eu fosse agrupá-lo por frutas, maçãs teria sua única média móvel e orages, etc Eu sei que vou precisar classificar o conjunto de dados primeiro, em seguida, use uma declaração de retenção. Eu estava realmente pensando em fazer uma macro também. Eu comecei isso, mas não consigo obter qualquer parte dela para o trabalho. Alguém pode me ajudar, eu sei como fazer a classificação, mas eu também sei como obter a média, mas não está agrupando corretamente. É só me dar o valor da observação. Eu tentei fazê-lo com SQL, mas não está funcionando. Este é o que eu vim acima com. Proc sql create table data. movingavg como selecionar a., Mean (basis) como mover de xx onde o grupo datado por produto RE: a média móvel com intervalo de datas isso não funciona. Data new set old por id reter base if date90 then avg mean (basis) run RE: média móvel com intervalo de datas Aqui está um exemplo do meu conjunto de dados. Produto data base maçã may20 4 laranja march2 3 maçã abril 3 banana jan31 33 maçã feb13 88 maçã dec2 12 o que eu preciso é uma corrida média móvel dos últimos 90 dias por produto com base no montante base. Desculpe a postagem múltipla, mas depois de reler meu post anterior, parecia confuso quanto ao que estou tentando fazer. Obrigado RE: média móvel com intervalo de datas klaz2002 (Programador) 25 Set 07 16:00 Devo começar por dizer obrigado por esta pergunta. Porque não me deu descanso até que eu pudesse resolvê-lo. Deixe-me afirmar o que eu acredito que é a sua exigência apenas para que você e eu estamos na mesma página. Req 1) Você quer ter uma média móvel dos últimos 90 dias de dados pelo nome do produto. Significado, que para um único produto (ex. Maçã) você só está interessado nos valores de base do produto que volta 90 dias. 2) Eu supus que você tem um (1) registro por produto por dia. Isso significa que você nunca tem mais de um valor de base por produto por dia. (O código não lida mais agora) Para resolver o problema de histórico (valores de volta 90 dias) Eu usei o lagx () e colocar dias 1-90 em variáveis ​​e, em seguida, adicionou-os a um ARRAY. Uma vez que a variável tem de ser incluído na matriz eu criei uma pequena macro que gerou as linhas de código que eu precisava. MACRO QUE CRIA 270 VARIÁVEIS POR 90 DIAS DE HISTÓRIA macro SetVars do i1 a 90 prodampi lagampi dateampi lagampi (data) baseampi lagampi (base) end mend PRIMEIRO ORDENAR POR PRODUTO E DATA proc classificar dados yourdata out datasorted por data do produto data de execução Final conjunto datasorted por produto data comprimento prod1-prod90 7 date1-date90 base1-base90 mysum 8 array atual mysum array prod prod1-prod90 matriz dt data1-date90 matriz bs base1-base90 SetVars SET A DATA 90 DIAS AGO PARA VERIFICAR DateMinus90 data-90 Bctr 1 mysum 0 LOOP ATRAVÉS DE TODOS OS POSSÍVEIS DIAS do i1 a 90 ESCRITA EXCEÇÃO PARA O PRIMEIRO CASO NO GRUPO DE PRODUTOS, NÃO HÁ NENHUM LAG ainda se primeiro. produto, em seguida, base de movingavg VERIFICAR O NOME DE PRODUTO MESMO E DENTRO DE 90 DAYS else if trim (upcase )) E dt dateminus90 então fazer SE ENCONTRAR ADICIONAR À SUMA VAR mysum sum (mysum, basis, bs) MANTENHA A COMUNIDADE DE QUANTOS DATAPOINTS ENCONTRADOS bctr 1 end end SE NENHUM ENCONTRADO ENTÃO O VALOR DA BASE ACTUAL DEVE SER USADO Se mysum 0 então myavg base mais myavg mysumbctr executar proc print dataFINAL var data do produto dateminus90 base myavg formato data dateminus90 mmddyy10. Eu espero que isso ajude você. Você realmente deve olhar isso como eu fiz isso realmente sem extensa verificação. O código de exemplo 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 o último N Observações dentro de um grupo BY. 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. 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.

No comments:

Post a Comment