Créer et remplir de nouvelles catégories basées sur des colonnes dans une colonne existanteBonjour,
J'essaie de créer une requête rapide dans laquelle une colonne catégorique (test_article) est utilisée pour créer une série de colonnes contenant uniquement un sous-ensemble d'informations. Si le script fonctionne comme prévu, le tableau se retrouverait avec 2 nouvelles colonnes (PBS vs ...).
| test_article | la mesure | PBS contre 709547 | PBS contre 709139 |
| PBS | 1.23 | PBS | PBS |
| PBS | 1.456 | PBS | PBS |
| 709547 | 4.56 | 709547 | EXCLURE |
709139 | 5.02 | EXCLURE | 709139 |
| 709139 | 6.02 | EXCLURE | 709139 |
| 709547 | 4.57 | 709547 | EXCLURE |
J'ai essayé le script suivant :
NamesDefaultToHere(1);
dt=current data table();
row = Associative Array( :test_article ) << Get Keys;
nc=N items (row);
For( i = 1, i <= nc, i++,
new column("PBS vs "|| row[i],"Character", "Nominal", Formula(If( :test_article == "PBS", :test_article,
If( :test_article == row[i],
"test",
"EXCLUDE"
)
))));D'une manière ou d'une autre, il ne remplit aucune valeur dans les nouvelles colonnes à l'exception de 'PBS'.
Aucune suggestion?
Merci beaucoup
Sébastien
Re : Créer et remplir de nouvelles catégories basées sur des colonnes dans une colonne existanteFonctionne aussi comme un charme.
Merci beaucoupRe : Créer et remplir de nouvelles catégories basées sur des colonnes dans une colonne existanteFonctionne comme un charme!
MerciRe : Créer et remplir de nouvelles catégories basées sur des colonnes dans une colonne existanteVous devez obtenir la valeur de row[i] dans la formule. JMP n'évalue pas les expressions dans la partie Formula() du message New Column().
Vous pouvez utiliser Remplaçant() pour obtenir la valeur réelle de row[i] dans la formule.
Names Default To Here( 1 );
dt = Current Data Table();
row = Associative Array( :test_article ) << Get Keys;
nc = N Items( row );
For( i = 1, i <= nc, i++,
Eval(
Substitute(
Expr(
New Column( "PBS vs " || row[i],
"Character",
"Nominal",
Formula( If( :test_article == "PBS" | :test_article == ri, :test_article, "EXCLUDE" ) )
)
),
Expr( ri ), Eval( row[i] )
)
)
);
Re : Créer et remplir de nouvelles catégories basées sur des colonnes dans une colonne existanteLe principal problème que vous rencontrez est que, dans la définition d'une formule, on ne peut pas avoir d'éléments qui doivent être évalués.JMP pense que tout ce qui se trouve dans la définition de la formule doit être évalué uniquement lorsque la formule est exécutée.
Par conséquent, la formule transmise dans la définition de la nouvelle colonne doit être complète dans sa syntaxe.La modification de votre code ci-dessous fonctionne avec votre exemple de table de données.
Names Default To Here( 1 );
dt = Current Data Table();
row = Associative Array( :test_article ) << Get Keys;
nc = N Items( row );
For( i = 1, i <= nc, i++,
Eval(
Parse(
"New Column( \!"PBS vs " || row[i] ||
"\!",
Character,
Nominal,
Formula(
if (Row() == 1, theTest = \!""
|| row[i] ||
"\!");
If( :test_article == \!"PBS\!",
zip=:test_article,
If( :test_article == theTest,
zip=\!"test\!",
zip=\!"EXCLUDE\!"
)
);
zip
)
)
);"
)
)
);
