Come creare una colonna formula per trovare il massimo di più colonne<meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />Ho diverse colonne di dati numerici (vedi esempio sotto) e vorrei creare una colonna formula per trovare il valore massimo per ogni riga tra le colonne.Qualsiasi aiuto sarebbe apprezzato.Grazie!
Valore 1 Valore 2 Valore 3 Valore massimo (inserirei la formula in questa colonna)
1 9 6 9
2 1 5 5
3 7 4 7
4 2 6 6
Ri: Come creare una colonna formula per trovare il massimo di più colonneNon sono sicuro del perché, ma il codice txnelsons non ha funzionato per me.
dopo il debug, ho dovuto cambiare l'ultima riga in:
namelist[ Loc( as list(maxes`), Max( maxes ) )[1] ];
ora sembra funzionare
Ri: Come creare una colonna formula per trovare il massimo di più colonneecco un semplice esempio che mostra il nome della colonna della colonna massima
Names Default To Here( 1 );
// Open Data Table: semiconductor capability.jmp
// → Data Table( "semiconductor capability" )
dt = Open( "$SAMPLE_DATA/semiconductor capability.jmp" );
dt << New Column( "Example",
character,
formula(
If( Row() == 1,
namelist = {"NPN1", "NPN2", "NPN3", "NPN4"}
);
maxes = [];
For( i = 1, i <= N Items( namelist ), i++,
maxes = maxes || Matrix( Column( namelist[i] )[Row()] )
);
If( Row() <= 5,
Show( maxes )
);
namelist[Loc( maxes, Max( maxes ) )[1]];
)
);
Ri: Come creare una colonna formula per trovare il massimo di più colonneQuesto potrebbe non essere sequitur, ma quale formula di colonna risulterebbe non nel della colonna massima, ma nel della colonna con il valore massimo?TIA
Ri: Come creare una colonna formula per trovare il massimo di più colonne@txnelson Sei un mago! Grazie per l'aiuto.
Ri: Come creare una colonna formula per trovare il massimo di più colonneLa sintassi che hai creato per il tuo esempio non funzionerà, tuttavia, quello che ne ho ricavato è che vuoi creare una nuova colonna che contenga il valore massimo in un elenco di colonne.Il codice specificato in una formula, ad esempio
:a * 2 + :p</img>
deve essere immesso come la stringa letterale effettiva che si desidera per la formula.JMP non eseguirà alcuna valutazione del JSL nella formula prima che venga trasmesso alla nuova colonna in fase di creazione.Pertanto, la formula che si vuole utilizzare, deve essere pienamente realizzata.E nel tuo codice, deve essere dinamico, il che richiede che l'istruzione della formula venga creata in JSL e quindi passata alla formula.
Di seguito è riportato uno script che mostra un modo per farlo
names default to here(1);
dt = Current Data Table();
// The formula that needs to be passed into the new column JSL needs
// to look like
// Max( :NameA, :UniqueX, :Name bb )
// A literal string of ":NameA, :UniqueX, :Name bb" needs to be created
// and then plugged into the JSL and then executed
// ":NameA, :UniqueX, :Name bb" is just an illustration, what the
// make up of the string needs to be derived from the actual column
// names in the data table
FreqList = dt << get column names( string, numeric );
freqString = "";
// build the JSL in the form that is required for the formula
For( i = 1, i <= N Items( FreqList ), i++,
If(
Contains( FreqList[i], "Unique" ) == 1 |
Contains( FreqList[i], "Name" ) == 1,
If( i==1, delim = "", delim = ",");
freqString = freqString || delim || " :" || FreqList[i]
)
);
// Run the command, passing into the formula the command string developed above
Eval( Parse( "dt << New Column (\!"Freq\!", numeric, Formula( Max( " || freqString || " )));" ) );
Ri: Come creare una colonna formula per trovare il massimo di più colonne@txnelson Sto avendo un problema simile. Dove voglio ottenere il massimo di più colonne. Nel mio esempio ho un elenco di colonne chiamato FreqList. Che ho creato utilizzando una formula simile a,
dt = current data table();
FreqList = dt << get column names( string, numeric );
For( i = N Items( FreqList ), i >= 1, i--,
If( Contains( FreqList[i], "Unique" )== 0,
FreqList= Remove( FreqList, i, 1 ),
Contains( FreqList[i], "Name" )== 0,
FreqList = Remove( FreqList, i, 1 )
)
);
// Then I was thinking something like the following should work,
dt << New Column ("Freq", numeric, Formula(Col Max(FreqList)));Il modo manuale per farlo sarebbe creare una nuova colonna chiamata "Freq". Quindi creando una formula come Maximum(:Freq1,:Freq2,:Freq3,FreqN), che creerebbe una nuova colonna con la frequenza massima in base alla riga.
Come potrei farlo in JSL?
Ri: Come creare una colonna formula per trovare il massimo di più colonneLa domanda posta da @adampaulsmith e ha risposto con @pmroz utilizza la funzione Maximum() in una formula definita per la colonna risultante.La formula si ripeterà automaticamente su ogni riga e applicherà la formula.Pertanto non è necessario fare alcun riferimento alla riga.
Tuttavia, se lo utilizzi in JSL aperto, puoi aggiungere un pedice ai riferimenti di colonna per indicare quale riga elaborare.
For( theRow = 1, theRow <= 10, theRow++,
:MaxValue[theRow] = Maximum( :Value 1[theRow], :Value 2[theRow], :Value 2[theRow] );
);
Consulta la documentazione su JSL nella Guida allo scripting
Aiuto==>Libri==>Guida allo scripting
Ri: Come creare una colonna formula per trovare il massimo di più colonneSe hai molte righe che vuoi cercare, esiste una funzione per selezionare un intervallo di righe invece di digitare ogni riga nella funzione?
Ri: Come creare una colonna formula per trovare il massimo di più colonneGrazie ! Sapevo che doveva essere qualcosa di semplice.
Ri: Come creare una colonna formula per trovare il massimo di più colonneIL Funzione Massimo() lo farò per te.
Maximum(:Value 1, :Value 2, :Value 3)