Ordinamento della tabella dati JMP ed eliminazione di righe in JMP Script<meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />CIAO:
Sono un novellino con JMP. Voglio ordinare e formattare una tabella di dati in base alle condizioni sulle prime due colonne. La prima colonna è una stringa di testo ("LaserID" ) e la seconda colonna è l'ora in cui vengono acquisiti i dati ("time"). Il mio obiettivo è derivare un'altra tabella con lo stesso numero esatto di colonne della tabella originale in modo che ci sia solo una riga di dati di un particolare "LaserID" (cioè nessuna ripetizione). L'eliminazione di più righe con lo stesso "LaserID" si baserà su quando i dati vengono acquisiti ("tempo").
In altre parole, la nuova tabella sarà composta da righe con un "LaserID" univoco con dati presi all'ultimo momento.
Allego la tavola Originale e Finale che voglio realizzare. Qualsiasi aiuto nello scrivere una sceneggiatura per questo compito sarà apprezzato.
Ri: Ordinamento della tabella dati JMP ed eliminazione di righe in JMP ScriptCiao David, sto usando il tuo script anche per eliminare i duplicati, ma ho una domanda: e se la mia colonna (equivalente a colonna "LaserID" nell'esempio) è numerico e continuo? in qualche modo lo script non funzionerebbe nel mio caso .... Se cambio le proprietà della colonna per renderlo "carattere", allora lo script funziona.
Grazie.
Ri: Ordinamento della tabella dati JMP ed eliminazione di righe in JMP ScriptHai ricevuto un paio di risposte di scripting. Se desideri eseguire questa operazione in modo interattivo, prova questi passaggi.
Ordina la tabella per ID laser E Tempo .

Quindi crea una nuova colonna con una formula per selezionare le righe in cui il file ID laser nella riga corrente non corrisponde a ID laser nella riga successiva. Poiché la tabella è ordinata per ID laser E Tempo otterrai l'ultima riga di ogni serie LaserID.
Il trucco qui è usare una colonna con un tipo di dati di Stato riga e il Stato selezionato funzione di stato nella formula.
Scegliere Cols -> Nuova colonna... e impostare il tipo di dati su Stato riga .

Quindi aggiungi a Formula.

Per la formula, inizia con Stato riga -> Stato selezionato .

Quindi inserire il confronto all'interno della funzione Selected State(). Questo confronto utilizza il Funzione ritardo() con un argomento -1 da confrontare con il valore di ID laser nella riga successiva.

Ora devi solo copiare gli stati della riga nella tua nuova colonna nell'area dello stato della riga attiva facendo clic sull'icona a forma di stella davanti al nome della colonna.

Ora puoi usare Tabelle->Sottoinsieme per creare un sottoinsieme delle righe selezionate.

Spero che aiuti!
- Jeff
Ri: Ordinamento della tabella dati JMP ed eliminazione di righe in JMP ScriptEcco un approccio alternativo che utilizza tabulate with max e quindi update:
dt1 = Tabella dati ( "Iniziale" ) ;
scheda1 = dt1 << Tabulare (
Mostra pannello di controllo ( 0 ) ,
Aggiungi tabella (
Tabella delle colonne ( Colonne di analisi ( : tempo ) , Statistiche ( Massimo ) ) ,
Tabella delle righe ( Colonne di raggruppamento ( : ID laser ) )
) , invisibile
) ;
dt2 = scheda1 << Trasforma in tabella dati ;
scheda1 << chiudi la finestra () ;
dt2 << Aggiornamento (
Con ( dt1 ) ,
Corrispondenza colonne ( : ID laser = : ID laser , : Nome ( "Massimo (tempo)" ) = : tempo ) ,
Aggiungi colonne dalla tabella di aggiornamento (
: PRF ,
: Nome ( "Potenza (W)" ) ,
: Nome ( "Pmon(W)" ) ,
: PRF2 ,
: Nome ( "Potenza2(W)" ) ,
: Nome ( "Pmon2(W)" )
)
) ;
Ri: Ordinamento della tabella dati JMP ed eliminazione di righe in JMP ScriptQualcosa di simile dovrebbe farlo:
Ottieni l'ultima riga = Funzione ({ dt , ID } , { Locale predefinito } ,
// questo può essere molto più semplice se assumiamo l'ordine datetime!
//ottieni solo quelle righe che corrispondono all'ID laser specificato
lstRows = dt << Ottieni righe dove ( : Identificazione laser == ID ) ;
//ottenere gli orari corrispondenti sotto forma di elenco
lstTimes = Colonna ( dt , "Tempo" )[ lstRows ] ;
// individua il tempo massimo
loc = Località Max ( lstTimes ) ;
// restituisce la riga contenente il tempo massimo
lstRows [ loc ]
) ;
//tabella dei dati di origine
dt = Tabella dati ( "Iniziale" ) ;
// ottiene un elenco di valori univoci per Laser ID
Riassumere ( lstID = Di ( : Identificazione laser )) ;
// crea un tavolo finale vuoto
nuovoDt = dt << Sottoinsieme ( Copia formule ( 0 )) ;
nuovoDt << Seleziona Tutte le righe ;
nuovoDt << Elimina righe ;
nuovoDt << Imposta nome ( "Finale" ) ;
// crea una riga per ogni risultato
Colonna ( nuovoDt , "identificazione laser" ) << Imposta valori ( lstID ) ;
//itera ogni ID per trovare la riga con la data più recente
Per ( io = 1 , io <= NArticoli ( lstID ) , io ++,
ID corrente = lstID [ io ] ;
R = Ottieni l'ultima riga ( dt , ID corrente ) ;
spettacolo ( R ) ;
//posiziona i valori dalla r'esima riga nella nuova tabella dati
Per ( C = 1 , C <= NCol ( dt ) , C ++,
Colonna ( nuovoDt , C )[ io ] = Colonna ( dt , C )[ R ]
)
) ;