Re: Come calcolare i valori relativi in base a una posizione di un valore base?Valore1_rel potrebbe essere una colonna formula.
Non sono sicuro di quale sarebbe la formula basata sui tuoi dati di esempio.
Di solito mi aspetto che relativo significhi Valore1 - Param1 , o Valore1 - 0 , ma nessuno dei due corrisponde all'esempio.
Come calcolare i valori relativi in base a una posizione di un valore base?Ciao a tutti,
Devo calcolare la quota percentuale dei valori della colonna Valore1 in base alla posizione del valore selezionato dalla colonna Valore1 . Ad esempio, se voglio farlo in base al secondo valore in colonna Valore1 (posizione 2, o valore 2), la colonna risultante Valore1_rel con valori relativi dovrebbe assomigliare a questo:

Inoltre, possono esserci più dati che devono essere raggruppati per elemento e quindi per ogni elemento percentuale calcolata (forse normalizzato o valore relativo è un termine un po' confuso) per tutti gli altri valori. Come posso fare ciò? Se la spiegazione non è abbastanza buona, perdona e sentiti libero di chiedere.
Grazie e cordiali saluti
Tabella datiScriptingRe: Come calcolare i valori relativi in base a una posizione di un valore base?Grazie per il commento. Sì, c'era zero nella tabella nella versione precedente del post, ma ho pensato che potesse essere un po' di confusione, quindi ho pensato che forse sarebbe stato più semplice chiedere di calcolare i valori desiderati prendendo il valore dalla seconda riga di ogni gruppo di elementi . E sì, lo "zero" dalla colonna Param1 doveva solo determinare il numero di riga.Re: Come calcolare i valori relativi in base a una posizione di un valore base?Ciao,
Puoi usare questa formula dichiaratamente complessa (forse qualcuno ne presenterà una più semplice) in una nuova colonna:
Eval(
Eval Expr(
:Val[(:Group << get data table) << get rows where(
Col Cumulative Sum( 1, :Group ) == 2 & :Group == Expr( :Group[Row()] )
)] / :Val
)
)
Probabilmente vale la pena disimballarlo almeno un po'.
Il costrutto Eval( Eval Expr()) viene utilizzato per forzare la valutazione dell'espressione Expr ( :Group[Row()] ). Senza questo, verranno restituiti diversi valori su ogni riga... uno per ogni gruppo. Provalo rimuovendo il wrapper Eval ( Eval Expr ()) e il wrapper Expr() per vedere cosa intendo.
Per determinare il valore che useremo nel rapporto, dobbiamo prendere la seconda riga all'interno del gruppo corrente. Per trovare questa riga, dobbiamo corrispondere al gruppo (la seconda parte della clausola get rows where) e deve corrispondere anche come secondo valore all'interno del gruppo. Un modo semplice per farlo è guardare la somma cumulativa di una colonna di 1, raggruppata per :Group. Quando questa colonna == 2, abbiamo il 2° valore di un gruppo. Ciò accade in più righe, ma la seconda parte della clausola limita il risultato al gruppo che corrisponde al gruppo della riga corrente. In questo modo, la tabella non ha nemmeno bisogno di essere ordinata per gruppo o valore.
La modifica del 2 nell'equivalenza della somma cumulativa in k, consente di utilizzare il valore k-esimo nel gruppo anziché il 2°.
Saluti,
Brady
