Script à rechercher et à remplacerJ'utilise un programme GCMS qui ajoute "saturé (####)" lorsqu'un nombre de zones de pic est saturé.Après avoir exporté ces résultats d'Excel dans une table de données JMP, je voudrais exécuter un script qui trouve ces occurrences et supprime le "saturé ()" mais laisse le nombre au format numérique, continu 12,0.
ScriptingRe: Script à rechercher et à remplacerInteractivement, il est assez facile d'utiliser la fonction Find pour effectuer un remplacement global de "(" et ")".Ensuite, en utilisant Standardize Attributes, vous pouvez sélectionner toutes les colonnes en question et les changer en format numérique, continu (Fixed Dec, 12,0)
Find est disponible sur
Modifier => Rechercher => Rechercher
Standardize Attributes est disponible sous le triangle rouge dans le panneau Colonnes sur le côté gauche de la table de données.
Voici un petit script qui fera également l'affaire, mais avec une grande table de données, cela peut être lent
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 );
)
);Re: Script à rechercher et à remplacerMerci pour le script, mais il semble que je n'étais pas assez précis.L'écriture de script est très nouvelle pour moi et j'ai supposé que la longueur du nombre n'avait pas d'importance.Je suppose que c'était faux.J'ai joué avec le script mais je n'ai pas réussi à le transformer "saturé (635403558)" en 635403558.J'apprécie ton aide.
Re: Script à rechercher et à remplacerLe script s'attend à ce que le "(" soit le premier caractère et le ")" au dernier caractère.Est-il possible que des caractères vides soient au début ou à la fin?
essayez cette version du script et voyez si cela aide
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 );
)
);Re: Script à rechercher et à remplacerSi je comprends bien, cela pourrait être une chance d'utiliser Correspondance de modèle de JMP (grâce à @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 )"));
Re: Script à rechercher et à remplacerMalheureusement, rien ne s'est passé lorsque j'ai exécuté le script.J'ai inclus une capture d'écran de mes données avec les attributs de colonne, si cela peut aider.Merci encore!

Re: Script à rechercher et à remplacerEssayez ceci sur votre colonne 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 );