Supprimer des colonnes avec une référence de formule dans JSLSalut,
J'ai un script dans lequel je voudrais supprimer les colonnes contenant une référence de formule.C'est facile à faire dans JMP : lorsque je supprime les colonnes inutiles, je reçois une "Alerte JMP" et je sélectionne "Supprimer la formule".Je peux alors supprimer mes colonnes de métadonnées, mais le tableau conserve le résultat calculé dans la colonne de formule.
Mon problème est le suivant : comment puis-je créer un script ?Existe-t-il une option permettant de supprimer une colonne de métadonnées contenant une référence à une formule ?J'utilise JMP10. Veuillez consulter l'exemple ci-dessous.
/*
bigClass = Open( "$SAMPLE_DATA/Big Class.jmp" );
bigClass << New Column( "height / weigh", Numeric, Continuous, Format( "Best", 12 ), Formula( :height / :weight ) );
bigClass << Delete Column( "height" );
bigClass << Delete Column( "weight" );
*/
Merci!
Re : Supprimer des colonnes avec une référence de formule dans JSLIl s'avère que j'ai déjà soumis quelque chose de cette nature à la liste de souhaits JMP et que j'étais en contact avec le support JMP (pas de solution claire pour l'instant, mais une solution de contournement que je n'ai pas encore eu le temps d'intégrer).
Article de la liste de souhaits : Suppression de formule dynamique
Quelques-uns contournent les options de mes discussions avec le support JMP.
Names Default to here(1);
dt = Open( "$SAMPLE_DATA\Big Class.jmp" );
dt << New Column( "Test 1", Numeric, Formula( :height + :weight ) );
dt << New Column( "Test 2", Numeric, Formula( :height + :age ) );
keepCols = AssociativeArray({"name","Test 1","sex"});
formList = {};
formCols = {};
for(i=1,i<=ncol(dt),i++,
if(IsEmpty(Column(dt,i) << get formula),
Empty()
,
insertInto(formList,Column(dt,i) << get formula);
insertinto(formCols,i);
);
show(formList,formCols)
);
existingCols = dt << get column names(string);
For(i=1,i<=nitems(existingCols), i++,
there = keepCols[existingCols[i]];
If(there == 0,
for(j=1,j<=nitems(formList),j++,
nowCol = existingCols[i];
If(Contains(char(formList[j]),nowCol) > 0,
Print(nowCol);
//show(formCols[j]);
Try(Column(dt,formCols[j]) << delete formula);
,
Empty()
)
);
//dt << delete columns(eval(existingCols[i]))
)
);
For(i=1,i<=nitems(existingCols), i++,
there = keepCols[existingCols[i]];
If(there == 0,
dt << delete columns(eval(existingCols[i]))
)
);
Names Default To Here( 1 );
dt = Open( "$SAMPLE_DATA\Big Class.jmp" );
dt << New Column( "Test 1", Numeric, Formula( :height + :weight ) );
colList = {:age, :height, :name};
colListStr = {"age", "height", "name"};
failed = {};
//dt << Delete Columns( :age ); //works
//dt << Delete Columns( colList[1] ); //fails
//dt << Delete Columns( Column( colListStr[1] ) ); //works
For( i = 1, i <= N Items( colList ), i++,
//dt << Clear Column Selection;
//colList[i] << Set Selected;
str = "";
//str = Log Capture( dt << Delete Columns( colList[i] ) ); //fails
//str = Log Capture( dt << Delete Columns() ); //works for selected columns
str = Log Capture( dt << Delete Columns( Column( colListStr[i] ) ) ); //works
Show( str );
If( str != "",
Insert Into( failed, colList[i] )
);
);
Show( failed );
Re : Supprimer des colonnes avec une référence de formule dans JSLJe n'ai pas encore trouvé de solution. Le plus pénible à coder que j'ai trouvé serait essentiellement de récupérer toutes les formules et de créer une carte de la colonne de formule avec les variables locales nécessaires à cette formule. Cela pourrait ensuite être utilisé dynamiquement lorsque des suppressions de colonnes doivent être effectuées.
Je suppose que quelque chose comme ça est la base de la façon dont JMP sait déclencher l'avertissement en premier lieu. Il me faudrait un certain temps pour trouver quelque chose de clair pour ce qui précède, donc idéalement, JMP pourrait créer une fonction JSL pour nous donner une capacité booléenne ou quelque chose du genre
Je finirai probablement par discuter avec le support JMP pour une solution plus officielle (ou en demander une dans la liste de souhaits).
Re : Supprimer des colonnes avec une référence de formule dans JSLSalut Nathan,
Avez-vous trouvé une solution à votre question/problème posté ?
J'essaye de faire pareil... Je souhaite supprimer une colonne utilisée dans une formule dans une ou plusieurs autres colonnes.
Je veux le rendre dynamique plutôt que de spécifier un " col << supprimer la formule" instruction pour une colonne particulière.
Re : Supprimer des colonnes avec une référence de formule dans JSLC'est un peu vieux, mais j'ai un ajout à cela et je pense que je vais d'abord essayer ici 
Que faire si je ne connais pas les colonnes avec la formule qui feront référence à la colonne que je souhaite supprimer. J'essaie de rendre quelque chose de dynamique et j'aimerais le précoder pour qu'il supprime automatiquement la formule en cas de conflit (comme si je le faisais manuellement), mais je ne trouve aucune syntaxe permettant cela.
la méthode "la plus simple" consiste simplement à supprimer toutes les formules pour que ce ne soit jamais un problème, mais cela semble un peu plus extrême que nécessaire.
Re : Supprimer des colonnes avec une référence de formule dans JSL@DonHil Column("nom de la colonne") << supprimer la formule ;
Re : Supprimer des colonnes avec une référence de formule dans JSLPouvez-vous me dire comment vous avez résolu ce problème ?J'ai essayé de supprimer la formule, mais cela a supprimé les valeurs de la colonne d'origine.Je dois supprimer une colonne contenant une référence de colonne.Merci.
Re : Supprimer des colonnes avec une référence de formule dans JSLPas grave.J'ai trouvé la réponse :
https://community.jmp.com/message/48129#48129