<meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />Ciao,
Ho cinque colonne numeriche. È necessario creare una nuova colonna che rifletta i valori massimi in ciascuna riga della colonna cinque. Invece di restituire il valore ho bisogno di mettere il nome della colonna corrispondente in ogni riga.
Grazie
Sam
Ciao Sam,
al livello più elementare, prova questo:
dt = Nuova tabella ( "tabella dati" ,
Nuova colonna ( "X1" , Formula ( Uniforme casuale () ) ) ,
Nuova colonna ( "X2" , Formula ( Uniforme casuale () ) ) ,
Nuova colonna ( "X3" , Formula ( Uniforme casuale () ) ) ,
Nuova colonna ( "X4" , Formula ( Uniforme casuale () ) ) ,
Nuova colonna ( "X5" , Formula ( Uniforme casuale () ) ) ,
aggiungi righe ( 100 )
) ;
dt << Nuova colonna ( "Nome massimo" ,
Personaggio ,
formula (
Se (
: X1 == Massimo ( : X1 , : X2 , : X3 , : X4 , : X5 ) , "X1" ,
: X2 == Massimo ( : X1 , : X2 , : X3 , : X4 , : X5 ) , "X2" ,
: X3 == Massimo ( : X1 , : X2 , : X3 , : X4 , : X5 ) , "X3" ,
: X4 == Massimo ( : X1 , : X2 , : X3 , : X4 , : X5 ) , "X4" ,
: X5 == Massimo ( : X1 , : X2 , : X3 , : X4 , : X5 ) , "X5" ,
)
)
) ;
da questo puoi generalizzare ulteriormente.
si prega di notare che se ci sono valori uguali che sono il massimo in una riga, questa formula preferirà la colonna in base alla sua posizione nell'istruzione if (valida e negativa).
Può essere fatto con una formula di colonna, ma è più semplice con un piccolo script JSL. Il loop nell'ultima riga identifica la colonna con il valore più alto e inserisce il suo nome nella nuova colonna "max". Se più colonne hanno lo stesso valore massimo, verrà selezionata la prima istanza.
dt = Tabella dei dati corrente () ;
Cols = dt << nomi getcolumn ( numerico ) ;
newcol = dt << Nuova colonna ( "Max" , personaggio ) ;
Per ogni riga ( newcol [] = Cols [ Loc. Max ( Matrice ( Cols ))] << prendi il nome ) ;