<meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />J'ai essayé de demander cela il y a des mois mais j'étais tellement perdu que mon explication était incohérente.Ensuite, je me suis fait retirer en mission avant de pouvoir m'expliquer.Voici donc ma meilleure tentative, espérons-le, d'expliquer ce que je veux et ce qui ne fonctionne pas.
Ce que je fais : je crée un script qui utilise un grand ensemble de données qui changera constamment, même si les noms de colonne ne le seront jamais.J'ai besoin d'effectuer une variété de résumés et de formules.Ma stratégie consiste à faire des tableaux récapitulatifs pour déterminer quelles catégories de données j'ai.L'exemple ci-dessous est un excellent exemple simpliste de ce que j'essaie de faire.Il utilise le gros fichier class.jmp et recherche les catégories de sexe.Une fois qu'il connaît les catégories, "M", "F", il créera de nouvelles colonnes pour chaque catégorie de variable, dans ce cas nommée :Example-F puis :Example-M et dans chaque nouvelle colonne, il y aura une formule qui fait référence à d'autres colonnes et effectue des calculs de ligne faisant référence à la toute nouvelle colonne en cours de création.
Mon problème : je n'arrive pas à faire fonctionner les références de colonne, en particulier la variable qui fait appel à la même colonne sous laquelle la formule est créée .Voir ci-dessous
//début
try(close(dt, No save));
try(close(dt_categories, No save));
try(close(dt_data, No save));
clear globals ();
dt = Ouvrir( " Chemin \big_class.jmp" );
// Crée une liste de genre et remplace les noms.Aucun problème ici.
dt_categories = dt << Résumé(
Groupe( :SEXE ),
format de nom de colonne de statistiques( "column" ),
nom de la table de sortie( "Gender_Summary" ));
genderlist = dt_categories:sex<
gendercount = nrows(dt_categories);
dt_data = dt << Split(Split By(:SEX), Split(:HEIGHT), Output Table("Split_Big_Class"), Colonnes restantes(Drop All)
);
Pour(i=1, i<=gendercount, i++,
//oldcol est créé à partir de la genderlist mais représente les noms de colonne sur le nouveau dt_data et ma formule les référencera.Aucun problème ici.
ancien col = colonne(liste des genres );
// Je dois nommer la nouvelle colonne différemment de la colonne existante (ancienne), sinon jmp incrémentera les noms et il semble que cela gâchera vraiment mes références de nom de colonne.Pas de problèmes ici, je ne pense pas.
nouveaunomcol = ("Exemple-"||liste des genres );
// Ensuite, j'ai d'abord essayé de créer la colonne afin que la formule suivante puisse faire référence à une colonne déjà existante, mais je ne sais pas si cela est nécessaire.
nouveaucol = dt_data << Nouvelle colonne( nouveaunomcol , numérique);
// La ligne suivante est une formule fonctionnelle mais n'utilise pas mes variables comme référence.Vous pouvez utiliser pour voir ce que j'essaie de faire.
// nouveaunomcol << Formule(Si(Ligne() == 1, 1 + :F, :Nom("Exemple-F")[Ligne() - 1,Vide()] + 1));
// La ligne suivante est la formule qui ne fonctionne pas car j'ai essayé d'insérer mes variables dans la formule de fonctionnement ci-dessus.C'est là qu'il lance des erreurs.
nouveaunomcol << Formule(Si(Ligne() == 1, 1 + ancien col , nouveaucol [Ligne() - 1, Vide()] + 1) );
);
Aucune suggestion?Je suis assez nouveau dans les scripts et j'essaie d'apprendre au fur et à mesure.MERCI!!!!!
Désolé, j'ai raté votre ligne montrant ce que vous essayiez de produire.
Essaye ça:
dt1 = Open( "$SAMPLE_DATA/Big Class.JMP" );
resume(categories = by(:SEX));
dt2 = dt1 << Split(Split By(:SEX), Split(:HEIGHT), Output Table("Split_Big_Class"), Remaining Columns(Drop All));
for(i=1, i<=nItems(categories), i++,
dt2 << newColumn("Exemple-" || catégories , personnage, formule(
Si(Ligne() == 1,
1 + asColumn(categories ),
asColumn("Exemple-" || catégories )[Ligne() - 1] + 1
);
);
);
);
Pouvez-vous expliquer en mots ce que vous voulez que votre formule produise, s'il vous plaît ?
Il semble que vous essayez de créer des valeurs basées sur les données de ligne précédentes - en ajoutant au fur et à mesure ?
Si vous précisez ce que vous voulez que le résultat final soit - avec un exemple si possible, ce serait formidable.