Thursday, 2 November 2017

Sas 12 Monats Gleitender Durchschnitt


Im ein SAS Anfänger und Im neugierig, wenn die folgende Aufgabe viel einfacher getan werden kann, wie es gegenwärtig in meinem Kopf ist. Ich habe die folgenden (vereinfachten) Metadaten in einer Tabelle namens userdatemoney: Benutzer - Datum - Geld mit verschiedenen Benutzern und Daten für jeden Kalendertag (für die letzten 4 Jahre). Die Daten werden von User ASC und Date ASC geordnet, Beispieldaten sieht so aus: Ich möchte nun einen fünftägigen gleitenden Durchschnitt für das Geld berechnen. Ich begann mit der beliebten apprach mit der Funktion lag () wie folgt: Das Problem mit dieser Methode tritt auf, wenn der Datenschritt in einen neuen Benutzer läuft. Aron würde einige verzögerte Werte von Anna bekommen, was natürlich nicht passieren sollte. Nun meine Frage: Ich bin ziemlich sicher, dass Sie den Benutzer wechseln können, indem Sie einige zusätzliche Felder wie laggeduser und durch Rücksetzen der N, Summe und Mean-Variablen, wenn Sie einen solchen Schalter bemerken, aber: Kann dies in einer einfacheren Art und Weise erfolgen Vielleicht mit dem BY-Klausel in irgendeiner Weise Vielen Dank für Ihre Ideen und Hilfe Ich denke, der einfachste Weg ist, um PROC EXPAND verwenden: Und wie in Johns Kommentar erwähnt, ist es wichtig, über fehlende Werte (und auch über Anfang und Ende Beobachtungen) zu erinnern. Ive hinzugefügt SETMISS-Option auf den Code, da Sie klar, dass Sie zerofy fehlende Werte wollen, nicht ignorieren (Standard-MOVAVE-Verhalten). Und wenn Sie die ersten 4 Beobachtungen für jeden Benutzer ausschließen möchten (da sie nicht genug Vorgeschichte haben, um den gleitenden Durchschnitt 5 zu berechnen), können Sie die Option TRIMLEFT 4 innerhalb von TRANSFORMOUT () verwenden. 13 3 15 beantwortet Dezember: 29sas, gleitenden 12-Monatssumme Hilfe von sasnewb raquo Fr 24 Sep 2004 01.13.17 GMT Ich habe ein Datensatz wie folgt aufgebaut: Monatswert 13.256 200.107 4.888 200.106 200.108 67.602 200.109 529 200.110 13.743 200.111 53.340 200112 912 200201 1003 200202 7982 200203 9620 200204 2674 200205 18790 200206 1698 Weitere Monatsbewertung. Ich möchte eine Variable erstellen, die die 12 Monate rolling Summe für jeden Monat z. B. Monat mth12val 200106 194339 und so weiter bis zum aktuellen Monat, 200409 für diesen Monat, 200410 für Oktober etc. Kann jemand eine Lösung, dies zu tun. Chuck alias Sasnewb Get Paid. Mit der freien E-Mail an zwalletindex. htmlusersasnewb sas gtgt gleitenden 12-Monatssumme Hilfe von yhuang raquo Fr 24 Sep 2004 01.34.36 GMT am Do, 23. September 2004 17.13.17 0000, Chuck Windsor lt XXXXXXXXX gt Monat zB Oktober Etc. Diese Art von rollenden Summe oder gleitenden Durchschnitt können leicht von SQL behandelt werden. Angenommen, Sie haben nicht Monat fehlt, und die Daten bereits nach Jahr und Monat sortiert ist, dann kann die Beobachtungszahl verwendet werden, jeden Monat zu identifizieren: Daten xx Eingabe Monatswert nn Karten 200106 13256 200107 4888 200108 67602 200109 529 200110 13743 200111 53340 200112 912 200201 1003 200202 7982 200203 9620 200204 2674 200205 18790 200206 1698 proc sql select unterscheiden a., Sum (b. value) als rollen von xx a. Xx b wobei eine lt bn lt a. n12 Gruppe durch einen --------- Monatswert n Rolling ------------------------ -------------- 13256 1 194.339 200.106 200.107 4.888 2 182781 200108 67602 3 177893 200109 529 4 110291 200110 13743 5 109762 200111 53340 6 96019 200112 912 7 42679 200201 1003 8 41767 200202 7982 9 40764 200203 9620 10 32782 200204 2674 11 23162 200205 18790 12 20488 200206 1698 13 1698 Wenn die Daten fehlenden Monat haben, dann müssen wir einige SAS-Funktionen verwenden, um das Fenster zu indentifizieren, was auch nicht sehr schwer ist. Sas gtgt 12 Monate rolling sum Hilfe von diskin raquo Fri, 24 Sep 2004 03:55:07 GMT Ya Huang bereits gab Ihnen eine nette SQL-Lösung. (Ich nehme an, es funktioniert). Im Fall wie ich, du bist nicht zu wild über SQL: Angenommen, es gibt keine fehlenden Datenpunkte und die Daten in absteigender Reihenfolge sortiert ist, können Sie die Verzögerungsfunktion entweder addieren Sie alle 12 Lags jedes Mal, oder behalten Sie die Summe und addieren Den neuen Wert, während die 13. Verzögerung subtrahiert wird. Erstere ist einfacher zu schreiben, aber ich fürchte, nicht sehr effizient, aber dann haben Sie nicht viele Daten. Daten ein Eingabe Jahr 1-4 Monate 5-6 v Karten 200106 13256 200107 4888 200108 67602 200109 529 200110 13743 200111 53340 200112 912 200201 1003 200202 7982 200203 9620 200204 2674 200205 18790 200206 1698 laufen proc sort DATAA von Jahr absteigend Monat Laufdaten absteigend (V), lag5 (v), lag6 (v), lag7 (v), lag8 (v), la g9 ist (V), lag10 (v), lag11 (v)) ausgeführt HTH, Dennis Diskin Von: Chuck Windsor Gesendet: 9232004 1:21:17 PM An: XXXXXXXXX Betreff: 12 Monate rolling sum Hilfe Ich habe einen Dataset wie folgt aufgebaut: Monatswert 13.256 200.107 4.888 200.106 200.108 67.602 200.109 529 200.110 13.743 200.111 53.340 200.112 912 200.201 1.003 200.202 7.982 200.203 9.620 200.204 2.674 200.205 18.790 200.206 1.698 mehr Monatswert Beobachtungen. Ich möchte eine Variable erstellen, die die 12 Monate rolling Summe für jeden Monat z. B. Monat mth12val 200106 194339 und so weiter bis zum aktuellen Monat, 200409 für diesen Monat, 200410 für Oktober etc. Kann jemand eine Lösung, dies zu tun. Chuck aka SasnewbDer Beispielcode auf der Registerkarte Voller Code veranschaulicht, wie der gleitende Durchschnitt einer Variablen über einen gesamten Datensatz, über die letzten N Beobachtungen in einem Datensatz oder über die letzten N Beobachtungen innerhalb einer BY-Gruppe berechnet werden kann. Diese Beispieldateien und Codebeispiele werden von SAS Institute Inc. bereitgestellt, und zwar ohne Gewährleistung jeglicher Art, entweder ausdrücklich oder implizit, einschließlich aber nicht beschränkt auf die implizierten Garantien der Marktgängigkeit und Eignung für einen bestimmten Zweck. Die Empfänger erkennen an und stimmen zu, dass SAS Institute nicht für irgendwelche Schäden haftbar ist, die sich aus ihrer Verwendung dieses Materials ergeben. Darüber hinaus bietet das SAS Institute keine Unterstützung für die hierin enthaltenen Materialien. Diese Beispieldateien und Codebeispiele werden von SAS Institute Inc. bereitgestellt, und zwar ohne Gewährleistung jeglicher Art, entweder ausdrücklich oder implizit, einschließlich aber nicht beschränkt auf die implizierten Garantien der Marktgängigkeit und Eignung für einen bestimmten Zweck. Die Empfänger erkennen an und stimmen zu, dass SAS Institute nicht für irgendwelche Schäden haftbar ist, die sich aus ihrer Verwendung dieses Materials ergeben. Darüber hinaus bietet das SAS Institute keine Unterstützung für die hierin enthaltenen Materialien. Berechnen Sie den gleitenden Durchschnitt einer Variablen über einen gesamten Datensatz, über die letzten N Beobachtungen in einem Datensatz oder über die letzten N Beobachtungen innerhalb einer BY-Gruppe.

No comments:

Post a Comment