nachfolgende kumulative SummenformelIch habe wahrscheinlich eine sehr einfache Formel. Ich habe einen Temperaturdatensatz und muss eine nachlaufende kumulative Summe in den letzten 120 Tagen berechnen (bekannt als "Gradheizwochen", da ich diese Summe durch Teilen durch 7 in Wochen umrechnen werde). Ich weiß, wie man einen nachlaufenden Durchschnitt erhält, und ich weiß, wie man eine kumulative Summe erhält, aber ist es möglich, eine nachlaufende kumulative Summe von 120 Tagen zu erhalten? In diesem Fall wird, wenn die Temperatur 31,3 ° C überschreitet, eine "Punktzahl" von 0,25 angegeben (Formel siehe Spalte "DH-6 Stunden"). Grundsätzlich möchte ich die kumulative Summe dieser 0,25-Werte über ein 120-Tage-Fenster, aber ich weiß nur, wie man nach Datum / Monat / Jahr usw. partitioniert (siehe z. B. Skript "#DHWs"), nicht nach einem tatsächlichen Fenster von Zeit. Ich bin zuversichtlich, dass dies machbar sein muss!
AnalytikDatentabelleSkriptingBetreff: nachfolgende kumulative SummenformelWenn ich richtig interpretiere, was Sie wollen, glaube ich, dass die folgende Formel eine laufende kumulative Summe von 120 nachläuft
If( Row() == 1,
holdMatrix = []
);
If( :Name( " Sea Surface Temperature (deg C)" ) > 31.3,
holdMatrix = holdMatrix || Matrix( 0.25 ),
holdMatrix = holdMatrix || Matrix( . )
);
If( N Cols( holdMatrix ) == 121,
holdMatrix[1] = []
);
Sum( holdMatrix ) / 7;
Betreff: nachfolgende kumulative SummenformelToll! Das hat funktioniert. Ich habe es nur geändert, um die Tatsache widerzuspiegeln, dass es acht Messzeiten pro Tag gab (dh jede Zeile ist kein eindeutiger Tag, also habe ich die 121 x 8 = 968 in der Bewertung multipliziert). Die Daten sind sinnvoll, da der maximale Wert bei dem von mir zuvor berechneten Jahresmaximum liegt, bevor er abfällt. Vielen Dank. Ich wünschte, es gäbe eine nachfolgende kumulative Summe im Formeleditor, die ähnliche Eingaben wie der gleitende Durchschnitt der Spalte hat (den ich die ganze Zeit verwende): Gewicht und N zuvor. Vielleicht füge ich es der Wunschliste hinzu.
Betreff: nachfolgende kumulative SummenformelIch habe eine Frage, die sich aus einer nervigen Eigenart im Datensatz ergibt: Ich muss die kumulierte Summe in Stunden (nicht Wochen, wie ich bereits erwähnt habe) über den Zeitraum von 120 Tagen auswerten. Die Zeitintervalle sind jedoch inkonsistent (siehe beigefügte Tabelle). In den meisten Fällen gibt es 8 Messungen / Tag, aber manchmal ist es weniger. Grundsätzlich möchte ich jedes Mal, wenn die Temperatur> 31,3 ist, den Zeitunterschied zur Spalte hinzufügen. Dies ist mit der Funktion "dif" einfach genug. Ich habe jedoch Schwierigkeiten, die "120 Tage" zur Matrixformel hinzuzufügen. In der beigefügten Tabelle möchte ich die kumulative Summe der "DHHs" über den nachfolgenden Zeitraum von 120 Tagen berechnen. Anstatt die Anzahl der "Zeilen" in der Formel zu haben, muss sie stattdessen das Datum verfolgen. Ist das möglich?
Betreff: nachfolgende kumulative SummenformelIch bin mir nicht ganz sicher, welchen Divisor Sie verwenden möchten, aber ich habe die Anzahl der Stunden über den Bereich der Datenmatrix verwendet.Hier ist die Formel, die ich mir ausgedacht habe
If( Row() == 1,
holdMatrix = [];
dateMatrix = [];
);
If( :Name( " Sea Surface Temperature (deg C)" ) > 31.3,
holdMatrix = holdMatrix || 0.25;
dateMatrix = dateMatrix || Informat( :date, "m/d/y" );
);
If( N Cols( dateMatrix ) != 0,
While( dateMatrix[N Cols( dateMatrix )] > dateMatrix[1] + In Days( 120 ),
holdMatrix[1] = [];
dateMatrix[1] = [];
);
x = Sum( holdMatrix ) / ((dateMatrix[N Cols( dateMatrix )] - dateMatrix[1]) / In Hours( 1 ));
,
x = .
);
x;
Betreff: nachfolgende kumulative SummenformelJim, danke, dass du meine Frage noch einmal angeschaut hast, obwohl es den Anschein hat, als wären die Werte, die sich aus deiner neuen Formel ergeben, zu niedrig (obwohl die Formel scheinbar sinnvoll ist). Aber vielleicht hätte ich meinen Bedarf anders angeben sollen. In diesem Fall gibt es möglicherweise eine einfachere (oder zumindest einfachere) Lösung: Ich möchte die Gesamtzahl der STUNDEN in einem Zeitraum von 120 Tagen wissen, in dem die Temperatur ÜBER war 31.3C. Dies entspricht normalerweise 3-Stunden-Blöcken, da die Temperatur (in den meisten Fällen) nur alle drei Stunden gemessen wird. Es handelt sich also im Grunde genommen um eine Reihe von 3er-Summen (siehe Spalte "DHHs" in der beigefügten Tabelle). Daher könnten die Werte in den wärmsten Monaten bei Hunderten liegen. Grundsätzlich benötige ich eine nachlaufende 120-Tage-Summe der DHH-Spalte, aber angesichts der unterschiedlichen Anzahl von Messungen / Tag ist dies schwierig!
Betreff: nachfolgende kumulative SummenformelWenn Sie nur die Summe wollen, dann teilen Sie die Summe nicht durch irgendetwas
If( Row() == 1,
holdMatrix = [];
dateMatrix = [];
);
If( :Name( " Sea Surface Temperature (deg C)" ) > 31.3,
holdMatrix = holdMatrix || 0.25;
dateMatrix = dateMatrix || Informat( :date, "m/d/y" );
);
If( N Cols( dateMatrix ) != 0,
While( dateMatrix[N Cols( dateMatrix )] > dateMatrix[1] + In Days( 120 ),
holdMatrix[1] = [];
dateMatrix[1] = [];
);
x = Sum( holdMatrix ) ;
,
x = .
);
x;