Script pour rechercher et remplacerJ'utilise un programme GCMS qui ajoute "saturé (####)" lorsqu'un comptage de surface 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.
Personnalisation de massePartage et communication des résultatsRe : Script pour rechercher et remplacerLe code que j'ai donné ci-dessus écrit simplement dans le Journal JMP . Ressemble à @txnelson vous a déjà expliqué comment gérer votre colonne "Zone". Si vous le souhaitez, vous pouvez utiliser une combinaison du code de correspondance de modèle et de son JSL.
Avec toutes ces choses, cela revient à ce que vous pouvez supposer en toute sécurité sur la régularité de l'entrée. Bien que l'approche de correspondance de modèle soit (légèrement) plus générale (et pourrait facilement être rendue plus générale), dans votre cas, cela n'a peut-être pas d'importance.
Re : Script pour rechercher et remplacerEssayez ceci sur votre colonne Zone
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 );Re : Script pour 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 la colonne, si cela peut vous aider.Merci encore!

Re : Script pour rechercher et remplacerSi j'ai bien compris, cela pourrait être une chance d'utiliser Correspondance de modèles 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 pour rechercher et remplacerLe script s'attend à ce que le "(" soit le premier caractère et le ")" soit le dernier caractère.Est-il possible que des caractères blancs 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 pour rechercher et remplacerMerci pour le script, mais il semble que je n'ai pas été assez précis.L'écriture d'un script est très nouvelle pour moi et j'ai supposé que la longueur du numéro 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 faire devenir "saturé (635403558)" en 635403558.J'apprécie ton aide.
Re : Script pour rechercher et remplacerDe manière interactive, il est assez facile d'utiliser la fonction Rechercher pour effectuer un remplacement global de "(" et ")".Ensuite, à l'aide de Standardize Attributes, vous pouvez sélectionner toutes les colonnes en question et les modifier au format numérique, continu (fixe Dec, 12,0)
Trouver est disponible sur
Édition=>Rechercher=>Rechercher
Standardiser les attributs est disponible sous le triangle rouge dans le panneau des colonnes sur le côté gauche du tableau de données.
Voici un petit script qui fera aussi l'affaire, mais avec une grosse table de données, ça risque d'ê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 );
)
);