Enregistrement de variables dans de nouvelles tables et de nouvelles colonnesJ'ai écrit un script qui trouve les lignes où col2 et col3 correspondent à des chaînes spécifiques, puis renvoie la valeur de la cellule dans col7 de ces lignes.Cependant, j'ai des problèmes pour écrire ces variables dans de nouvelles colonnes dans de nouvelles tables.
....
New Table( "Results",Add Rows( 2 ),
New Column( " FUS",Character,"Nominal",
Set Values({"Fus1","Fus2"})),
New Column( "PASS/FAIL",continuous,"Nominal", formula( Name Expr(APass)),formula(Name Expr(BPass)));
)Ici, APass et Bpass sont des variables qui sont égales à la valeur de la colonne 7 des lignes de recherche respectives.Ce sont respectivement les chaînes Réussite et Échec.Cependant, lorsque je crée le tableau, la dernière fonction remplace et remplit ses résultats sur l'ensemble du tableau. Ainsi, la table doit être Fus1-Pass Fus2-Fail, mais génère Fus1-Fail Fus2-Fail.L'inverse quand je change la commande.
Une aide sur la façon de remplir une nouvelle colonne avec plusieurs variables ?
Très appréciée
Scriptles fenêtresRe: Enregistrer des variables dans de nouvelles tables et de nouvelles colonnesComme indiqué dans votre précédente discussion sur ce sujet, vous NE POUVEZ PAS avoir à définir de formules pour une colonne.Voici une illustration simple de cela en utilisant la table de données Big Class.Si vous définissez 2 formules pour une colonne, la deuxième formule remplacera la première formule.
new column("two formula", formula(:height), formula(:weight));
Donne les résultats suivants

Notez que la deuxième formule définie est celle que JMP utilise finalement.
Maintenant, cela ne veut pas dire qu'une formule ne peut pas être complexe.On peut en fait définir une formule qui traite chaque ligne différemment.Il doit juste être défini dans une formule.Voici un exemple simple d'une formule plus complexe qui prend plusieurs colonnes dans la formule et fait des comparaisons entre elles.
New Column( "combined formula",
formula(
If(
:Sex == "F" & :age > 12, :weight,
:Sex == "F" & :age <= 12, :height,
:Sex == "M" & :age > 13, :weight,
:Sex == "M" & :age <= 13, :height
)
)
)

Re: Enregistrer des variables dans de nouvelles tables et de nouvelles colonnesJ'ai fourni cette réponse à SMW en privé ; j'espère que cela aidera d'autres.
Essayez d'exécuter ce code.Regardez dans la fenêtre du journal pour voir ce qui se passe.La fonction get rows où la fonction renvoie une matrice, pas un numéro de ligne réel.Vous devez parcourir la matrice pour utiliser les valeurs de ligne.
Names Default To Here( 1 );
dt1 = New Table( "Test", Add Rows( 4 ),
New Column( "Column 1", Numeric, "Continuous", Format( "Best", 12 ),
Set Values( [1, 2, 3, 4] ) ),
New Column( "Column 2", Character, "Nominal",
Set Values( {"This is EMOTIONAL", "abc", "EMO", "Here's an EMO example"} ) ),
New Column( "Column 3", Character, "Nominal",
Set Values(
{"And not KLARIFIED", "KLA", "xyz", "This contains KLA string"} ) ),
New Column( "Column 4", Numeric, "Continuous", Format( "Best", 12 ),
Set Values( [., ., ., .] ) ),
New Column( "Column 5", Numeric, "Continuous", Format( "Best", 12 ),
Set Values( [., ., ., .] ) ),
New Column( "Column 6", Numeric, "Continuous", Format( "Best", 12 ),
Set Values( [., ., ., .] ) ),
New Column( "Column 7", Character, "Nominal",
Set Values( {"Hello", "World", "Fubar", "Ski"} ) ),
);
match_rows = dt1 << get rows where(contains(as column(2),"EMO")
& contains(as column(3),"KLA"));
for (i = 1, i <= nrows(match_rows), i++,
one_row = match_rows[i];
apass = column(dt1, 7)[one_row];
print(apass);
);