supprimer une colonne avec des référencesSalut
J'ai écrit un script pour supprimer une colonne.Cependant, j'obtiens une erreur "Impossible de supprimer cette colonne alors qu'elle est référencée par la formule dans une autre colonne. "
Il n'y a pas de formule, mais si vous utilisez l'option "Supprimer les références" manuellement, je peux supprimer la colonne manuellement.
J'ai besoin d'apprendre à utiliser cette fonction dans mon script pour utiliser "Supprimer les références"
J'utilise JMP 16.1.0
Modélisation statistique avancéeAutomatisation et scriptÉtudes de consommation et de marchéFusion et nettoyage des donnéesRe : supprimer une colonne avec des référencesLe problème que j'ai signalé au support JMP a maintenant été signalé comme un bogue et a été signalé à la R&D.
Parce qu'il est possible de supprimer des formules de manière interactive, j'ai eu l'idée que vous pourriez utiliser << Supprimer la propriété ("Formule") au lieu de << Supprimer la formule et cela semble fonctionner, mais je serais très prudent avec les formules lors de la création de tableaux récapitulatifs car ils pourraient avoir des interactions très étranges
Names Default To Here(1);
dt = Open("$SAMPLE_DATA/Big Class.jmp");
//create some formula colums
dt << New Column("deduction", Numeric, "Continuous", Format("Best", 12), Formula(:height - :weight));
dt << New Column("concat_col", Character, "Nominal", Formula(:name||"_"||Char(:name)));
dt_summary = dt << Summary(
Group(:name,:sex, :concat_col),
Mean(:height),
Mean(:deduction),
Freq("None"),
Weight("None"),
Link to original datatable(0)
);
Try(
f1 = Column(dt_summary, "concat_col") << Get Formula;
show(f1);
Column(dt_summary, "concat_col") << Delete Formula;
f2 = Column(dt_summary, "concat_col") << Get Formula;
show(f2);
,
show(exception_msg);
);
Try(
f3 = Column(dt_summary, "concat_col") << Get Formula;
show(f3);
Column(dt_summary, "concat_col") << Delete Property("Formula");
f4 = Column(dt_summary, "concat_col") << Get Formula;
show(f4);
dt_summary << Delete Column("name");
,
show(exception_msg);
);
/*
Close(dt_summary, no save);
Close(dt, no save);
*/Re : supprimer une colonne avec des référencesLe problème est-il lié au tableau récapitulatif ?
J'ai remarqué aujourd'hui un comportement étrange avec des tableaux récapitulatifs lorsque j'ai essayé de supprimer des formules. Je teste actuellement le problème et j'enverrai un ticket au support JMP après un bon exemple. Je peux aussi poster l'exemple ici après qu'il soit prêt.
Modifier:
Voici un exemple rapide du problème que j'ai rencontré aujourd'hui (j'utilise assez rarement des formules...) :
Names Default To Here(1);
dt = Open("$SAMPLE_DATA/Big Class.jmp");
//create some formula colums
dt << New Column("deduction", Numeric, "Continuous", Format("Best", 12), Formula(:height - :weight));
dt << New Column("concat_col", Character, "Nominal", Formula(:name||"_"||Char(:name)));
dt_summary = dt << Summary(
Group(:name,:sex, :concat_col),
Mean(:height),
Mean(:deduction),
Freq("None"),
Weight("None"),
Link to original datatable(0)
);
Try(
dt_summary << Delete Column("name");
,
show(exception_msg);
);
Try(
f = Column(dt_summary, "concat_col") << Get Formula;
show(f);
Column(dt_summary, "concat_col") << Delete Formula;
,
show(exception_msg);
);
/*
Cannot delete column "name" while it is referenced by the formula of column "concat_col".
Removing a formula leaves the data unchanged. Removing references replaces each reference with an empty value. These effects are permanent and cannot be undone.
f = :name || "_" || Char(:name);
exception_msg = {"Column concat_col has no formula"(1, 2, "Delete Formula", Delete Formula /*###*/)};
*/
La formule n'est pas visible dans la liste des colonnes à gauche et la formule n'est pas visible non plus dans la zone du panneau Formule.

La formule est là si je clique sur Modifier la formule. Et si je change "_" dans la concaténation en " ", la formule disparaît, la colonne est verrouillée et les valeurs sont modifiées dans datatable :


Une solution simple dans ce cas pourrait consister à supprimer d'abord toutes les formules de la table de données d'origine avant de créer la table récapitulative, mais je pense que les formules ne doivent pas être copiées (juste les valeurs) dans la table récapitulative, car cela pourrait avoir un comportement très étrange selon les formules.
Edit2 :
J'ai maintenant envoyé un ticket concernant ce problème/fonctionnalité que j'ai décrit au support JMP.
Re : supprimer une colonne avec des référencesJe me demande s'il y a une colonne de formule cachée? S'il n'y a vraiment pas de colonne de formule, cela ressemble à un bogue, et l'envoi du tableau au support technique pourrait aider à le corriger.
Re : supprimer une colonne avec des référencesVous voudrez peut-être prendre du recul et réfléchir à l'approche que vous utilisez. Au lieu de résoudre ce problème, il pourrait être évité en premier lieu. Par exemple, pourquoi utilisez-vous une formule dans l'autre colonne de données ? Pourquoi voulez-vous supprimer une colonne ?
Vous pourrez peut-être utiliser d'autres méthodes pour remplir une colonne de données qui n'impliquent pas du tout de formules. La seule raison d'utiliser une formule lors de la création de scripts JMP est si vous avez besoin que la colonne de données soit mise à jour lorsque la table de données change. Il existe sinon d'autres moyens.
Pouvez-vous publier votre script ? Ou décrivez les étapes de votre script ?
Re : supprimer une colonne avec des référencespouvez-vous fournir un exemple de tableau de données ?