尾隨累積和公式我有一個很簡單的公式需求。 我有一個溫度數據集,需要計算過去120天內的尾隨累積總和(稱為“度加熱週”,因為我會將這個總和除以7轉換成周)。 我知道如何獲取尾隨平均數,也知道如何獲取累積總和,但是是否有可能獲得尾隨的120天累積總和? 在這種情況下,當溫度超過31.3℃時,將給出0.25的“得分”(有關公式,請參閱“ DH-6 hrs”列)。 基本上,我希望在120天的窗口中累積這0.25個值,但是我只知道如何按日期/月/年等進行分區(例如,請參見“ #DHWs”腳本),而不是按實際的窗口進行分區時間。 我相信這一定可行!
分析工具數據表腳本編寫回复:尾隨累積總和公式如果我正確解釋了您想要的內容,我相信下面的公式將計算出連續的120個尾隨累積和
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;
回复:尾隨累積總和公式大! 做到了。 我只是對其進行了修改,以反映每天有八次測量時間的事實(即每一行不是唯一的一天,因此我在評估中乘以121 x 8 = 968)。 數據之所以有意義,是因為該值在下降之前達到了我之前計算的年度最大值。 非常感謝。 我希望公式編輯器中有一個尾隨的累加總和,其輸入與列移動平均值(我一直使用)一直相似:權重和N。 也許我將其添加到“願望”列表中。
回复:尾隨累積總和公式我有一個問題來自數據集中的一個令人討厭的怪癖:我需要評估過去120天內以小時為單位的累積總和(不是我之前提到的幾週)。 但是,時間間隔不一致(請參見附表)。 在大多數情況下,每天進行8次測量,但有時會更少。 基本上,任何時候溫度> 31.3時,我都想將時差添加到列中。 使用“ dif”功能很容易。 但是,我苦惱的是如何將“ 120天”添加到矩陣公式中。 因此,在所附的表格中,我想計算過去120天的“ DHH”的累計和。 我需要公式來跟踪日期,而不是在公式中包含“行”數。 那可能嗎?
回复:尾隨累積總和公式我不確定您要使用的除數,但是我使用了數據矩陣範圍內的小時數。這是我想出的公式
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;
回复:尾隨累積總和公式吉姆(Jim),儘管您的新公式得出的值似乎太低(儘管該公式看似有意義),但感謝您再次查看我的問題。 但是也許我應該以不同的方式陳述我的需要,在這種情況下,可能有一個更簡單的(或者至少是更直接的解決方案):我想知道在過去的120天內溫度過高的小時數31.3℃。 由於通常每三個小時才測量一次溫度(在大多數情況下),所以這通常相當於3個小時的時間,因此基本上是一系列3的總和(請參閱附表中的“ DHHs”列)。 因此,在最暖和的月份中,該值可能在數百中。 因此,基本上,我需要DHH列的尾隨120天總和,但是考慮到每天的測量次數不同,這一點很棘手!
回复:尾隨累積總和公式如果您只想要總和,那就不要將總和除以
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;