Script da trovare e sostituireUso un programma GCMS che aggiunge "saturato (####)" quando il conteggio di un'area di picco è saturo.Dopo aver esportato questi risultati da Excel in una tabella dati JMP, vorrei eseguire uno script che trovi queste occorrenze e rimuove "saturate ()" ma lascia il numero in formato 12,0 numerico continuo.
ScriptingRi: Script per trovare e sostituireIn modo interattivo, è abbastanza facile usare la funzionalità Trova per eseguire una sostituzione globale di "(" e ")".Quindi, utilizzando Standardize Attributes puoi selezionare tutte le colonne in questione e modificarle in formato numerico, continuo (Fixed Dec, 12,0)
Trova è disponibile all'indirizzo
Modifica => Cerca => Trova
Standardizza attributi è disponibile sotto il triangolo rosso nel pannello Colonne sul lato sinistro se la tabella dati.
Ecco un piccolo script che farà anche il trucco, ma con una tabella di dati di grandi dimensioni potrebbe essere lento
Names Default To Here( 1 );
dt = Current Data Table();
// Get all character columns
colList = dt << get column names( character, string );
// Loop across all character columns and find those who have the pattern (###)
// and if found, then convert all columns
For( I = 3, i <= N Items( colList ), i++,
If( Left( char(Column( dt, colList[i] )[1]), 1 ) == "(" & Right( char(Column( dt, colList[i] )[1]), 1 ) == ")",
For( k = 1, k <= N Rows( dt ), k++,
If( Left( (Column( dt, colLIst[i] )[k]), 1 ) == "(",
Column( dt, colList[i] )[k] = Substr( Column( dt, colList[i] )[k] ,
2)
);
If( Right( (Column( dt, colList[i] )[k]), 1 ) == ")",
Column( dt, colList[i] )[k] = Word( 1, Column( dt, colList[i] )[k], ")" )
);
);
// Convert to numeric, etc.
Column( dt, colList[i] ) << data type( numeric ) << modeling type( continuous ) <<
Format( "Fixed Dec", 12, 0 );
)
);Ri: Script per trovare e sostituireGrazie per la sceneggiatura, ma sembra che non fossi abbastanza specifico.Scrivere la sceneggiatura è molto nuovo per me e pensavo che la lunghezza del numero non avesse importanza.Immagino che fosse sbagliato.Ho giocato con la sceneggiatura ma non sono riuscito a farla trasformare "saturato (635403558)" in 635403558.Apprezzo il vostro aiuto.
Ri: Script per trovare e sostituireLo script si aspetta che "(" sia il primo carattere e ")" sia l'ultimo carattere.È possibile che i caratteri vuoti siano all'inizio o alla fine?
prova questa versione dello script e vedi se aiuta
Names Default To Here( 1 );
dt = Current Data Table();
// Get all character columns
colList = dt << get column names( character, string );
// Loop across all character columns and find those who have the pattern (###)
// and if found, then convert all columns
For( I = 1, i <= N Items( colList ), i++,
If( Left( Trim( Char( Column( dt, colList[i] )[1] ) ), 1 ) == "(" & Right( Trim( Char( Column( dt, colList[i] )[1] ) ), 1 ) == ")",
For( k = 1, k <= N Rows( dt ), k++,
If( Left( (Trim( Column( dt, colLIst[i] ) )[k]), 1 ) == "(",
Column( dt, colList[i] )[k] = Substr( Trim( Column( dt, colList[i] )[k] ), 2 )
);
If( Right( Trim( Column( dt, colList[i] )[k] ), 1 ) == ")",
Column( dt, colList[i] )[k] = Word( 1, Column( dt, colList[i] )[k], ")" )
);
);
// Convert to numeric, etc.
Column( dt, colList[i] ) << data type( numeric ) << modeling type( continuous ) << Format( "Fixed Dec", 12, 0 );
)
);Ri: Script per trovare e sostituireSe ho capito bene, questa potrebbe essere un'opportunità da usare Corrispondenza di pattern di JMP (grazie a @Craige_Hales
:(:(
NamesDefaultToHere(1);
// Define a function
removeSaturated =
Function({inStr}, {Default Local},
// A pattern that will match a span of digits, with or without a leading '-'
digits = (""|"-") + patSpan("0123456789");
// Put the match into 'found' (might be identical to 'inStr')
patMatch(inStr, digits >? found);
// Return 'found' as a number
Num(found);
);
// Try it out
Print(removeSaturated("saturated( 635403558 )"));
Print(removeSaturated("saturated(635403558)"));
Print(removeSaturated("635403558"));
Print(removeSaturated("635403"));
Print(removeSaturated("-635403"));
Print(removeSaturated("saturated( -635403 )"));
Ri: Script per trovare e sostituirePurtroppo non è successo niente quando ho eseguito lo script.Ho incluso una schermata dei miei dati insieme agli attributi della colonna, se questo aiuta.Grazie ancora!

Ri: Script per trovare e sostituireProva questo nella colonna Area
Names Default To Here( 1 );
dt = Current Data Table();
// Loop across all character columns and find those who have the pattern (###)
// and if found, then convert all columns
For( k = 1, k <= N Rows( dt ), k++,
If( Contains( :Area[k], "(" ),
:Area[k] = Word( 2, :Area[k], "()" )
)
);
:Area << data type( numeric ) << modeling type( continuous ) << Format( "Fixed Dec", 12, 0 );