Ich habe einen Screenshot enthalten, um zu helfen, mein Problem zu klären: Ich versuche, irgendeine Art von gleitendem Durchschnitt zu berechnen und die Standardabweichung zu bewegen. Die Sache ist, dass ich die Variationskoeffizienten (stdevavg) für den tatsächlichen Wert berechnen möchte. Normalerweise erfolgt dies durch die Berechnung der stdev und avg für die letzten 5 Jahre. Allerdings gibt es manchmal auch Beobachtungen in meiner Datenbank, für die ich nicht die Informationen der letzten 5 Jahre habe (vielleicht nur 3, 2 usw.). Thats, warum ich einen Code wünsche, der das avg und stdev berechnet, selbst wenn es keine Information für die ganzen 5 Jahre gibt. Auch, wie Sie in den Beobachtungen sehen, manchmal habe ich Informationen über mehr als 5 Jahre, wenn dies der Fall ist, brauche ich irgendeinen gleitenden Durchschnitt, der mir erlaubt, das avg und stdev für die letzten 5 Jahre zu berechnen. Wenn also ein Unternehmen 7 Jahre lang Informationen hat, brauche ich irgendeine Art von Code, der das avg und stdev berechnen wird, sagen wir 1997 (von 1991-1996), 1998 (von 1992-1997) und 1999 (1993-1998). Als ich nicht sehr vertraut mit sas Befehlen es aussehen sollte (sehr sehr grob) wie: Oder so etwas, ich habe wirklich keine Ahnung, Im gonna versuchen und es herauszufinden, aber es lohnt es, es zu schreiben, wenn ich es nicht selbst finden werde SAS Anfänger und Im neugierig, wenn die folgende Aufgabe viel einfacher gemacht werden kann, wie es derzeit in meinem Kopf ist. Ich habe die folgenden (vereinfachten) Metadaten in einer Tabelle namens userdatemoney: User - Date - 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 bestellt, Beispieldaten sehen so aus: Ich möchte nun einen fünftägigen gleitenden Durchschnitt für das Geld berechnen. Ich begann mit dem ziemlich populären apprach mit der lag () Funktion wie folgt: Wie Sie sehen, das Problem mit dieser Methode tritt auf, wenn es wenn der Datenschritt in einen neuen Benutzer läuft. Aron bekam einige hintere Werte von Anna, was natürlich nicht passieren sollte. Nun meine Frage: Ich bin mir ziemlich sicher, dass du mit dem User-Switch umgehen kannst, indem du einige zusätzliche Felder wie laggeduser hinzufügst und die N-, Summen - und Mean-Variablen zurücksetzest, wenn du einen solchen Schalter kennst, aber das kann man einfacher machen BY Klausel in irgendeiner Weise Danke für deine Ideen und Hilfe Ich denke, der einfachste Weg ist, PROC EXPAND zu verwenden: Und wie in Johns Kommentar erwähnt, ist es wichtig, sich an fehlende Werte zu erinnern (und auch über Anfangs - und Endbeobachtungen). Ive hat die SETMISS-Option zum Code hinzugefügt, da du klar gemacht hast, dass du zerofy fehlende Werte willst, ignorierst sie nicht (Standard-MOVAVE-Verhalten). Und wenn du die ersten 4 Beobachtungen für jeden Benutzer ausschließen willst (da sie nicht genug Vorgeschichte haben, um den gleitenden Durchschnitt zu berechnen 5), kannst du die Option TRIMLEFT 4 innerhalb von TRANSFORMOUT () verwenden. Antwortete am 3. Dezember 13 um 15: 29In diesem Beitrag zeige ich einen Trick, um eine gleitende durchschnittliche Berechnung zu machen (kann auf andere Operationen erweitert werden, die Fensterfunktionen benötigen), die super schnell sind. Oft müssen SAS-Analysten gleitende durchschnittliche Berechnungen durchführen und es gibt mehrere Optionen in der Reihenfolge der Präferenz: 1. PROC EXPAND 2. DATA STEP 3. PROC SQL Aber viele Websites können nicht SASETS lizenziert werden, um PROC EXPAND zu verwenden und gleitenden Durchschnitt in DATA zu machen STEP erfordert einige Codierung und ist fehleranfällig. PROC SQL ist eine natürliche Wahl für Junior-Programmierer und in vielen Business Cases die einzige Lösung, aber SAS39s PROC SQL fehlt Fenster-Funktionen, die in vielen DBs zur Verfügung stehen, um die gleitende durchschnittliche Berechnung zu erleichtern. Eine Technik, die man gewöhnlich benutzt, ist CROSS JOIN, was sehr teuer ist und keine lebensfähige Lösung für sogar mittelgroße Datensätze ist. In diesem Beitrag zeige ich einen Trick, um eine gleitende Durchschnittsberechnung durchzuführen (kann auf andere Operationen erweitert werden, die Fensterfunktionen benötigen), die super schnell sind. Man betrachte die einfachste gleitende Durchschnittsrechnung, bei der die nachfolgenden K Beobachtungen in die Berechnung einbezogen werden, nämlich MA (K), hier setzen wir K5. Wir erzeugen zunächst 20 Sample-Daten, bei denen Variable ID für die Fensterung verwendet werden soll und die Variable X in der MA-Berechnung verwendet werden soll, und dann wenden wir den Standard-CROSS JOIN an, um zunächst die resultierenden Daten, Non-Grouped, zu untersuchen Zu verstehen, wie man die Datenstruktur nutzen kann. Aus dem daraus resultierenden Datensatz ist es schwer, einen Hinweis zu finden, jetzt lasst man in diesem Datensatz nach der Quinth-Spalte sortieren: Aus diesen sortierten Daten ist klar, dass wir eigentlich den ganzen Originaldatensatz nicht vergeben müssen, Können wir einen quotatenquot datensatz erzeugen, der den differenzwert enthält, und lassen Sie die ursprüngliche datenmenge CROSS JOIN mit diesem viel kleineren quotoperationquot datensatz und alle daten, die wir für MA berechnen müssen, sind dort. Jetzt lassen Sie es jetzt: CROSS JOIN Original-Daten mit quotoperation quot Daten, sortieren nach (a. idops), die eigentlich quotbid39 in sortierten Datensatz ist Hinweis, dass in oben Code, ist es notwendig, ax multiplizieren mit b. weight, so dass die Daten Kann verbleibend sein, sonst wird der gleiche X-Wert aus der ursprünglichen Tabelle ausgegeben und die MA-Berechnung wird fehlgeschlagen. Die explizite Gewichtsvariable fügt der gesamten MA-Berechnung tatsächlich mehr Flexibilität hinzu. Während Sie es auf 1 setzen für alle obs Ergebnis in einer einfachen MA-Berechnung, zuordnen unterschiedliche Gewichte wird dazu beitragen, komplexere MA-Computing zu lösen, wie geben weitere Beobachtungen weniger Gewicht für eine verfallene MA. Wenn ein anderer K-Parameter in MA (K) Berechnungen erforderlich ist, muss nur der Betriebsdatensatz aktualisiert werden, was trivialer Job ist. Nun wird die aktuelle Codevorlage für die MA (K) - Rechnung sein: Mit dieser neuen Methode ist es interessant, sie mit dem teuren Selbst-CROSS JOIN sowie mit PROC EXPAND zu vergleichen. Auf meiner Arbeitsstation (Intel i5 3.8Ghz, 32GB Speicher, 1TB 72K HDD), ist Self CROSS JOIN ununterbrochen lang in Laufzeit (wenn Daten groß sind), während die neue Methode nur 2X so viel Zeit wie PROC EXPAND verwendet, sind beide Zeitaufwendungen Trivialen Vergleich zu Selbst CROSS JOIN. Der nachstehend angegebene Zeitverbrauch liegt im Quantenbereich. Unten ist der Code-Leser laufen und vergleichen können. Geschrieben am 10. Mai 2015 von Liang Xie SAS Programmierung für Data MiningDer Beispielcode auf der Registerkarte Full Code veranschaulicht, wie man den gleitenden Durchschnitt einer Variablen durch einen ganzen Datensatz, über die letzten N Beobachtungen in einem Datensatz oder über dem letzten N berechnen kann Beobachtungen innerhalb einer BY-Gruppe. Diese Beispieldateien und Codebeispiele werden von SAS Institute Inc. zur Verfügung gestellt, wie es ohne jegliche Gewährleistung, weder ausdrücklich noch stillschweigend, einschließlich, aber nicht beschränkt auf die implizierten Garantien der Marktgängigkeit und Eignung für einen bestimmten Zweck ist. Die Empfänger bestätigen und stimmen zu, dass das SAS-Institut nicht für irgendwelche Schäden haftbar ist, die sich aus der Verwendung dieses Materials ergeben. Darüber hinaus wird das SAS-Institut die hierin enthaltenen Materialien nicht unterstützen. Diese Beispieldateien und Codebeispiele werden von SAS Institute Inc. zur Verfügung gestellt, wie es ohne jegliche Gewährleistung, weder ausdrücklich noch stillschweigend, einschließlich, aber nicht beschränkt auf die implizierten Garantien der Marktgängigkeit und Eignung für einen bestimmten Zweck ist. Die Empfänger bestätigen und stimmen zu, dass das SAS-Institut nicht für irgendwelche Schäden haftbar ist, die sich aus der Verwendung dieses Materials ergeben. Darüber hinaus wird das SAS-Institut die hierin enthaltenen Materialien nicht unterstützen. Berechnen Sie den gleitenden Durchschnitt einer Variablen durch einen ganzen Datensatz, über die letzten N Beobachtungen in einem Datensatz oder über die letzten N Beobachtungen innerhalb einer BY-Gruppe.
Wie zu tun Forex Trading Lernen Sie, wie man Forex Trading mit ARB Trader Signale und genießen: Wie man Forex Trading. Aspiring Forex Trader sind in der Regel verweigert die richtige Information, um eine genaue Entscheidung vor Abonnement dieser interessante und dennoch herausfordernde Industrie. Es gibt Vorlieben führen Forex Trading und sich selbst vertraut mit ihm, wird Ihnen helfen, festzustellen, ob Forex Trading ist für Sie oder nicht, weil es isn8217t für alle. Allerdings, um die Route von Forex Trading zu verstehen, gibt es ein paar Optionen, die Sie beachten sollten. Forex Trading nt n f th gt reichen schnellen Schemata nd u rbbl gewonnen8217t b Millionär l n thr Jahre. Forex Trading doesn8217t Unterstützung der Schaffung n Instant Reichtum Paket t m t b n unrealistischen Ziel f th Geschäftsmodell. Thr r vrl Faktoren tht Führer th Trading-Plattform whh bestimmt hw muh Trader n mk abhängig n hw exponiert Trader t th Plattform nd Theorie Führung th Forex Markt. It8217s bl fr For...
Comments
Post a Comment