Skip to main content

Sas Glidande Medelvärde Array


Jag har följande dataset: 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 Jag vill beräkna för varje RFA1-nivå (som är 1-4), medelvärdet (Totalt RAMN för en RFA1-nivå totalt räknat på den RFA1-nivån) med hjälp av arrayer. Utan arrays, Om jag delar upp och gör, får jag resultat för individuell nivå. Följande är koden: Mitt problem är hur skriver jag denna kod för alla 4 nivåer av RFA1 med hjälp av Arrays. frågade 23 sep 14 kl 03:49 Tack för ditt svar Joe. Jag har provat detta med PROC MEANS och ja, de gör vad som krävs. Men jag lär mig SAS och fräschare på det, och vill också lära mig matriser. Därför försöker jag lösa det med hjälp av Arrays. Jag tror med 39amp39 initialiserar jag tre variabler i en mening baserat på om villkoret. Vänligen förlåt mig för min okunnighet och låt mig veta var jag går fel. ndash Charlotte 23 september 14 på 14: 51Se MACMA1 i SASQC-provbiblioteket Det föregående exemplet illustrerar hur du kan skapa glidande medeldiagram med hjälp av rådata (processmätningar). I många applikationer tillhandahålls emellertid data som undergrupps summarisk statistik. Detta exempel illustrerar hur du kan använda MACHART-satsen med data av denna typ. Följande datasats (CLIPSUM) tillhandahåller data från föregående exempel i sammanfattad form: En lista över CLIPSUM visas i Figur 21.3. Det finns exakt en observation för varje undergrupp (observera att undergrupperna fortfarande indexeras av DAY). Variabeln GAPX innehåller undergruppens medel, variabeln GAPS innehåller standardgruppsavvikelserna för undergruppen, och variabeln GAPN innehåller undersökstorlekarna för undergrupp (dessa är alla fem). Datasættet CLIPSUM Figur 21.3: Sammanfattningsdatasatsen CLIPSUM Du kan läsa den här datamängden genom att ange den som en HISTORI-dataset i PROC MACONTROL-satsen, enligt följande: Det resulterande glidande medeldiagrammet visas i Figur 21.4. Eftersom LINEPRINTER-alternativet anges i PROC MACONTROL-satsen, produceras linjeprinterutmatning. Den asterisk () som anges i enskilda citat efter undergruppsvariabeln anger tecknet som används för att plotta punkter. Denna karaktär måste följa ett likartat tecken. Observera att GAP inte är namnet på en SAS-variabel i datasatsen men istället är det gemensamma prefixet för namnen på de tre SAS-variablerna GAPX, GAPS och GAPN. Suffixet karaktärerna X. S. och N anger medelvärdet. standardavvikelse . och provstorlek. respektive. Således kan du ange tre sammanfattningsvariabler för undergrupperna i en HISTORY-dataset med ett enda namn (GAP), som kallas processen. Variablerna GAPX, GAPS och GAPN är alla nödvändiga. Namnet DAY specificerat efter asterisken är namnet på undergruppsvariabeln. Flyttande medeldiagram för Gap-mätningar Figur 21.4: Enhetligt viktad Flyttande genomsnittsdiagram från sammanfattningsdata I allmänhet måste en HISTORI-ingångsdatauppsättning som används i MACHART-deklarationen innehålla följande variabler: Undergruppsvariabel undergrupp Medel variabel Undergrupp Standardavvikelse Variabel Undergrupp Provstorleksvariabel Vidare , namnen på undergruppsmedel, standardavvikelser och provstorleksvariabler måste börja med det processnamn som anges i MACHART-satsen och slutar med special suffix-tecknen X. S. och N. respektive. Om namnen inte följer denna konvention kan du använda alternativet RENAME i PROC MACONTROL-satsen för att byta namn på variablerna under MACONTROL-procedurens steg. Sammanfattningsvis beror tolkningen av processen på ingångsdatauppsättningen. Om rådata läses med alternativet DATA (som i föregående exempel), är processen namnet på SAS-variabeln som innehåller processmätningarna. Om sammanfattande data läses med hjälp av alternativet HISTORY (som i det här exemplet), är processen det gemensamma prefixet för namnen på variablerna som innehåller sammanfattningsstatistiken. Mer information finns i 34HISTORY Data Set34. 13 13Vridande medelvärde med datumintervall glidande medelvärde med datumintervall glidande medelvärde med datumintervall Jag är ny på SAS, och jag har några problem med att beräkna glidande medelvärde baserat på datum och grupperingar inom datasetet. I grund och botten försöker jag beräkna det rörliga genomsnittet för varje observation baserat på de senaste 90 dagarna. Varje observation har ett datum. Jag måste också gruppera dem så att det rörliga genomsnittet endast är baserat på gruppen. Med andra ord, om jag skulle gruppera den med frukt, skulle äpplen ha sitt enda glidande medelvärde och orages, etc. Jag vet att jag måste sortera dataset först och sedan använda en behållningsdeklaration. Jag tänkte faktiskt på att göra ett makro också. Jag började detta, men kan inte tyckas få någon del av det att fungera. Kan någon hjälpa mig Jag vet hur man gör sorteringen, men jag vet också hur man får medelvärdet, men det går inte att gruppera korrekt. Det ger mig bara värdet av observationen. Jag försökte sedan göra det med SQL, men det fungerar inte heller. Detta är vad jag kom fram till. Proc sql skapa tabell data. movingavg som välj a., Mean (basis) som flyttar från xx där dateratgrupp efter produkt RE: glidande medelvärde med datumintervall detta fungerar inte heller. Data ny uppsättning gammal av id behåller grund om datum90 då avg genomsnittlig (grund) kör RE: glidande medelvärde med datumintervall Här är ett exempel på min dataset. Produktdatum baserad äpple may20 4 orange marsch 2 3 äpple april 3 banan jan31 33 äpple feb13 88 äpple dec2 12 Vad jag behöver är ett löpande glidande medelvärde av de senaste 90 dagarna av för varje produkt baserat på basbeloppet. Ledsen för flera inlägg, men efter att jag läst mitt tidigare inlägg verkade det förvirrande om vad jag försöker göra. tack RE: glidande medelvärde med datumintervall klaz2002 (programmerare) 25 sep 07 16:00 Jag måste börja med att tacka för denna fråga. Eftersom det gav mig ingen vila tills jag kunde lösa det. Låt mig ange vad jag tror är ditt krav bara så att du och jag är på samma sida. Req 1) Du vill ha ett glidande medelvärde av de senaste 90 dagarna av data efter produktnamn. Det betyder att för en enda produkt (ex. Äpple) är du bara intresserad av grundvärdena för den produkten som går tillbaka 90 dagar. 2) Jag antog att du har en (1) post per produkt per dag. Det betyder att du aldrig har mer än ett grundvärde per produkt per dag. (Koden hanterar inte mer just nu) För att lösa historikproblemet (värdena går tillbaka 90 dagar) använde jag lagx () och sätter dagar 1-90 i variabler och lade dem sedan till en ARRAY. Eftersom variabeln måste ingå i matrisen skapade jag ett litet makro som genererade de kodlinjer som jag behövde. MACRO som skapar 270 VARIABLER FÖR 90 DAGAR AV HISTORIA makro SetVars gör i1 till 90 prodampi lagampi (produkt) dateampi lagampi (datum) basisampi lagampi (basis) slutändring FÖRSTA SORT PER PRODUKT OCH DATE proc sortera data yourdata ut datasorted efter produktdatodatum kör data sista uppsättningen datasorterad efter produktdatumslängd prod1-prod90 7 date1-date90 basis1 - basis90 mysum 8 array nuvarande mysum array prod prod1-prod90 array dt date1-date90 array bs basis1-basis90 SetVars SÄT DATUM 90 DAGAR SOM TILL ATT CHECK DateMinus90 Date-90 Bctr 1 mysum 0 LÖP UNDER ALLA MÖJLIGA DAGAR gör I1 till 90 SKRIV UTTRYCK FÖR FIRST CASE I PRODUKTGRUPPEN, OM DET INTE ÄR INGEN LAG, OM FÖRSTA PRODUKT DÄR FÖRBÄTTRING AV BAKGRUND KONTROLL FÖR SAMMA PRODUKTNAMN OCH INTE I 90 DAGAR ANNAN OM TJÄNSTER )) Trim (upcase (produkt)) och dt dateminus90 gör sedan IF FUNDERT SÄKER ATT SUM VAR MYSUM summa (mysum, bas, bs) HÅLLA EN TEL AV HAN MAN DATAPOINTS FOUND Bctr 1 slutet, om inget annat än den nuvarande basvärdet BORDE ANVÄNDAS Om mysum 0 då minavg grund annan minavg mysumbctr kör proc print dataFINAL var produkt datum dateminus90 grund myavg format datum dateminus90 mmddyy10. spring Jag hoppas att detta hjälper dig. Du borde verkligen titta på detta eftersom jag gjorde det här verkligen utan omfattande kontroll. Det kan finnas många begränsningar till den här koden så var försiktig. Provkoden på fliken Fullständig kod illustrerar hur man beräknar det rörliga genomsnittet av en variabel genom en hel datamängd, över de sista N-observationerna i en dataset eller över den sista N observationer inom en BY-grupp. Dessa samplingsfiler och kodexempel tillhandahålls av SAS Institute Inc., utan garantin av något slag, varken uttryckligt eller underförstått, inklusive men inte begränsat till de underförstådda garantierna för säljbarhet och lämplighet för ett visst ändamål. Mottagarna bekräftar och godkänner att SAS Institute inte är ansvarigt för eventuella skador som uppstår på grund av deras användning av detta material. Dessutom kommer SAS Institute att inte ge något stöd för materialet som ingår i häri. Dessa samplingsfiler och kodexempel tillhandahålls av SAS Institute Inc., utan garantin av något slag, varken uttryckligt eller underförstått, inklusive men inte begränsat till de underförstådda garantierna för säljbarhet och lämplighet för ett visst ändamål. Mottagarna bekräftar och godkänner att SAS Institute inte är ansvarigt för eventuella skador som uppstår på grund av deras användning av detta material. Dessutom kommer SAS Institute att inte ge något stöd för materialet som ingår i häri. Beräkna det rörliga genomsnittet av en variabel genom en hel dataset, över de sista N-observationerna i en dataset eller över de sista N-observationerna inom en BY-grupp.

Comments