formula della somma cumulativa finaleHo quella che probabilmente sarà una formula molto semplice. Ho un set di dati sulla temperatura e devo calcolare una somma cumulativa finale negli ultimi 120 giorni (nota come "settimane di riscaldamento dei gradi" poiché convertirò questa somma in settimane dividendo per 7). So come ottenere una media finale e so come ottenere una somma cumulativa, ma è possibile ottenere una somma cumulativa finale di 120 giorni? In questo caso, quando la temperatura supera i 31,3 ° C, viene fornito un "punteggio" di 0,25 (vedere la colonna "DH-6 ore" per la formula.). Fondamentalmente, voglio la somma cumulativa di questi 0,25 valori su una finestra di 120 giorni, ma so solo come partizionare per data / mese / anno, ecc. (Vedi script "#DHWs" per esempio), non da una finestra effettiva di tempo. Sono fiducioso che questo debba essere fattibile!
AnalyticsTabella datiScriptingRi: formula della somma cumulativa finaleSe sto interpretando correttamente ciò che vuoi, credo che la formula seguente calcolerà una somma cumulativa finale di 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;
Ri: formula della somma cumulativa finaleGrande! Quello ha funzionato. L'ho appena modificato per riflettere il fatto che c'erano otto tempi di misurazione al giorno (cioè, ogni riga non è un giorno unico, quindi ho moltiplicato 121 x 8 = 968 nella valutazione). I dati hanno senso perché il valore raggiunge il massimo annuale che avevo calcolato prima, prima di scendere. Grazie mille. Vorrei che ci fosse una somma cumulativa finale nell'editor di formule che ha input simili alla media mobile della colonna (che uso TUTTO il tempo): peso e N prima. Forse lo aggiungerò alla lista dei desideri.
Ri: formula della somma cumulativa finaleHo una domanda che nasce da una fastidiosa stranezza nel set di dati: devo valutare la somma cumulativa in ore (non settimane, come ho detto prima) nel periodo di 120 giorni finali. Tuttavia, gli intervalli di tempo non sono coerenti (vedi tabella allegata). Nella MAGGIOR PARTE dei casi, ci sono 8 misurazioni / giorno, ma a volte è inferiore. Fondamentalmente, ogni volta che la temperatura è> 31,3, voglio aggiungere la differenza di orario alla colonna. Questo è abbastanza facile usando la funzione "dif". Tuttavia, quello che faccio fatica è come aggiungere i "120 giorni" alla formula-matrice. Quindi, nella tabella allegata, voglio fare la somma cumulativa dei "DHH" nel periodo finale di 120 giorni. Piuttosto che avere il numero di "righe" nella formula, ho bisogno che tenga invece traccia della data. È possibile?
Ri: formula della somma cumulativa finaleNon sono esattamente sicuro di quale divisore stai cercando di utilizzare, ma ho usato il numero di ore nell'intervallo della matrice di dati.Ecco la formula che ho escogitato
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;
Ri: formula della somma cumulativa finaleJim, grazie per aver guardato di nuovo la mia domanda, anche se sembra che i valori risultanti dalla tua nuova formula siano troppo bassi (nonostante la formula abbia senso). Ma forse avrei dovuto affermare la mia esigenza in modo diverso, nel qual caso potrebbe esserci una soluzione più semplice (o almeno più diretta): voglio conoscere il numero totale di ORE in un periodo di 120 giorni in cui la temperatura era SUPERATA 31.3C. Questo di solito equivale a blocchi di 3 ore poiché la temperatura viene misurata solo ogni tre ore (nella maggior parte dei casi), quindi è fondamentalmente una serie di somme di 3 (vedere la colonna "DHH" nella tabella allegata). Pertanto, i valori potrebbero essere centinaia per i mesi più caldi. Quindi, fondamentalmente, ho bisogno di una somma finale di 120 giorni della colonna DHH, ma è complicato dato il problema dei diversi numeri di misurazioni / giorno!
Ri: formula della somma cumulativa finaleSe vuoi solo la somma, non dividerla per nulla
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;