Come selezionare i tre valori di cella più alti in ogni colonna?Per ogni colonna che contiene una parola, ad esempio "Previsione", voglio estrarre i primi 3 valori di cella maggiori di 5 o maggiori di 4,5 (se ottengo 3 numeri sopra 5, non voglio numeri sopra 4,5) in un elenco. Inoltre, selezionando quello più lontano da 5 e nascondendo il valore della cella corrispondente nella sua tabella non elaborata. Ad esempio, in questa tabella di esempio fornita di seguito:
Nella colonna Prediction B, voglio memorizzare 6.6, 5.3 e 5. E nascondi la cella adiacente al dado Prediction B nella colonna B, ad esempio il valore della cella 65.
Il mio codice seleziona le colonne che contengono la stringa "Prediction".
dt = Current Data Table();
a = "Prediction";
col = dt << get column names( string );
nc = N Items( col );
For( i = 1, i <= nc, i++,
If( Contains( col[i], a ), )
);
Come posso scegliere le prime 3 celle superiori a 5 o 4,5? Grazie mille alla community di JMP per essere stata così tempestiva.
Ri: Primi 3 valori di cella in ogni colonna@txnelson Potrei farlo usando regex: match = regex(colstrings, "[{,]\s*([^{,}]*Prediction[^{,}]*)[,}]", "\1");
Ri: Primi 3 valori di cella in ogni colonnaUtilizzare la funzione Loc() anziché la funzione Contains() per specificare stringhe specifiche.
Ri: Primi 3 valori di cella in ogni colonnaInoltre, c'è un modo per abbinare colonne come B e Prediction B? Grazie
Ri: Primi 3 valori di cella in ogni colonnaOk, grazie per l'aiuto.@txnelson @uday_guntupalli
Ri: Primi 3 valori di cella in ogni colonnaNon esiste un modo diretto per recuperare un valore di cella una volta che è stato impostato su Mancante.Questo è il motivo per cui @dale_lehman suggerito di utilizzare nuove colonne e @uday_guntupalli suggerisce di creare un nuovo sottoinsieme dei dati e quindi di modificare il sottoinsieme.
Ri: Primi 3 valori di cella in ogni colonna@amy ,
Puoi sempre creare sottoinsiemi di tabelle, piuttosto che provare a includere singole celle.
Ri: Primi 3 valori di cella in ogni colonna@amy ,
dt = Current Data Table();
SearchTerm = "Prediction";
ColNames = dt << Get Column Names("String");
DesRowsList = {};
for(i = 1, i <= N Cols(dt), i++,
If(Contains(ColNames[i],SearchTerm),
SR = dt << Select Where(As Column(dt,ColNames[i]) > 4.5) << Get Selected Rows;
Insert Into(DesRowsList,SR);
dt << Clear Select;
);
);Questo dovrebbe aiutarti a ottenere le righe che soddisfano la tua condizione in un elenco. Da lì dovresti essere in grado di estrarre i primi 3 in ogni caso. Per rispondere alla tua domanda, non sono a conoscenza dell'esclusione solo delle celle
Ri: Primi 3 valori di cella in ogni colonna@txnelson Bene, dopo aver impostato il valore di una cella su valore mancante/nascondi/escludi il valore di una cella, vorrei eseguire alcuni modelli sulla tabella dei dati e quindi decidere di mantenerlo in questo modo o includere nuovamente il valore nella cella. È possibile?
Ri: Primi 3 valori di cella in ogni colonnaIn JMP non si "esclude" una singola cella, ma si imposta il valore della cella su "Valore mancante".Il simbolo del valore mancante è "."
Se la colonna è di un carattere Tipo di dati, imposta il valore su ""
Ri: Primi 3 valori di cella in ogni colonnaNon voglio nemmeno escludere un'intera riga. Voglio escludere solo le celle. Ad esempio, nella tabella che ho pubblicato, voglio poter escludere la cella nella colonna "B" adiacente alla cella che ha valore 6.6 nella colonna "Previsione B". Sto ancora lottando per capire come posso usare regex per abbinare tali stringhe. Ho creato 2 elenchi, uno che contiene nomi di colonne che contengono la parola "Prediction" e un altro che non lo è. Ti sarei grato se potessi anche indicarmi qualsiasi funzione che ritieni possa funzionare meglio con questo tipo di tabelle. Ho appena iniziato a lavorare con JSL e sto ancora lottando con esso. Grazie in anticipo per l'aiuto.@uday_guntupalli
PS: significa che non c'è modo di escludere una singola cella da una colonna in JSL?
Ri: Primi 3 valori di cella in ogni colonna@amy ,
Stai cercando di escludere l'intera riga o solo la riga per quella colonna? Il motivo per cui chiedo, sono abbastanza sicuro che puoi escludere l'intera riga usando:
dt << Exclude ;
Tuttavia, se vuoi solo escludere la riga in una colonna, non penso sia possibile. Allora perché non provi a memorizzare i numeri di riga in una variabile e quindi a escludere quelle righe?
Ri: Primi 3 valori di cella in ogni colonnaQuesto è un modo per controllare i dati che devono essere rimossi dalla mia analisi, quindi devo farlo allo stesso modo. Grazie mille per tutto l'aiuto lo apprezzo molto @dale_lehman
Ri: Primi 3 valori di cella in ogni colonnaNon faccio molto scripting quindi lo lascerò a qualcun altro per aiutarti.Dirò solo che non capisco davvero il motivo per voler escludere le righe dopo aver eseguito queste operazioni: sembrerebbe meglio creare nuove colonne con quelle righe escluse o impostate come mancanti.Penserei che lo script sarebbe relativamente semplice e non mi piace l'idea di sovrascrivere i dati originali (se è quello che stai suggerendo).
Ri: Primi 3 valori di cella in ogni colonna@dale_lehman Grazie per l'aiuto. Ho aggiornato il mio script per selezionare il valore massimo di ogni colonna e l'ho salvato nella variabile "val". Sai come posso escludere la cella con il numero massimo nella prima colonna, eseguire alcune operazioni quindi escludere la cella con il numero massimo nella seconda colonna e così via?
dt = Current Data Table();
col = dt << get column names( string );
nc = N Items( col );
For( i = 1, i <= nc, i++,
Col1 = Column( dt, i );
If( Contains( col[i], "Prediction" ),
Show( col[i] );
val = Abs( Col Max( Col1 ) );
Show( val );
MaxRow = dt << get rows where( As Column( Col1 ) == Abs( Col Max( Col1 ) ) );
);
);
Ri: Primi 3 valori di cella in ogni colonnaHo allegato il tuo esempio con un tentativo di utilizzare le previsioni della colonna B come specificato.Non sono sicuro che questo faccia esattamente quello che vuoi, ma penso che ci sia vicino.
Ri: Primi 3 valori di cella in ogni colonna@dale_lehman beh, non sono riuscito a trovare molto su come posso usare la funzione di rango di colonna. Posso estrarre un valore massimo ma non riesco ancora a capire come posso andare avanti con i primi 3.
Ri: Primi 3 valori di cella in ogni colonnaLa funzione del rango di colonna (e alcune istruzioni IF) potrebbero fare il trucco.