Remplacement d'une ligne vide par une autre ligne de données avec une instruction ifSalut,
J'ai un ensemble original de données (table1) et j'essaie de l'écrire sur le résultat du tableau 2.
Si un nombre est inférieur à 300, la chaîne « type1 » sera imprimée dans la colonne « result1 ».
Si un nombre est supérieur à 300, la chaîne "type2" sera imprimée dans la colonne "result2".
| Nombre |
type 1 |
type 2 |
résultat1 |
résultat2 |
| 100 |
a1 |
a2 |
|
|
| 200 |
b1 |
b2 |
|
|
| 150 |
c1 |
c2 |
|
|
| 275 |
d1 |
d2 |
|
|
| 555 |
e1 |
e2 |
|
|
| 424 |
f1 |
f2 |
|
|
| 572 |
g1 |
g2 |
|
|
| 783 |
h1 |
h2 |
|
|
| 125 |
i1 |
i2 |
|
|
Tableau 1 : Données originales
| Nombre |
type 1 |
type 2 |
résultat1 |
résultat2 |
| 100 |
a1 |
a2 |
a1 |
|
| 200 |
b1 |
b2 |
b1 |
|
| 150 |
c1 |
c2 |
c1 |
|
| 275 |
d1 |
d2 |
d1 |
|
| 555 |
e1 |
e2 |
|
e2 |
| 424 |
f1 |
f2 |
|
f2 |
| 572 |
g1 |
g2 |
|
g2 |
| 783 |
h1 |
h2 |
|
h2 |
| 125 |
i1 |
i2 |
i1 |
|
Tableau2 : Résultat
Jusqu'à présent, ce que j'ai fait sur mon script est indiqué ci-dessous.
dt = Current Data Table();
dt << New Column("result1",
Character,
"Nominal",
For Each Row(If(:Number << 300), :result1 == :type1, "")
);
dt << New Column("result2",
Character,
"Nominal",
For Each Row(If(:Number >> 300), :result2 == :type2, "")
);
Modélisation statistique avancéeAutomatisation et scriptsPersonnalisation de massePartager et communiquer les résultatsRe : Remplacer une ligne vide par une autre ligne de données avec une instruction ifPersonnellement, je trouve qu'aborder des problèmes comme celui-ci en utilisant une approche de type Excel, où les nouvelles colonnes sont créées avec des formules individuelles appliquées à chaque colonne, est déroutant et inefficace.La capacité de JMP à modifier directement les valeurs des tables de données dans du code JSL « ouvert » peut être utilisée pour résoudre le problème de manière plus propre et plus efficace.
// Create the new columns
dt << New Column( "result1", Character );
dt << New Column( "result2", Character );
// Populate the columns
For Each Row( If( :Number < 300, :result1 = :type1, :result2 = :type1 ) );
Re : Remplacer une ligne vide par une autre ligne de données avec une instruction ifSalut jthi, très bien, je vais essayer les informations d'aide. Le scénario fonctionne. Merci pour l'aide.
Re : Remplacer une ligne vide par une autre ligne de données avec une instruction ifIl y a quelques problèmes, en utilisant >>/<< comme comparaison et en utilisant For Each Row dans la création de colonnes. Vous trouverez ci-dessous une option pour travailler la syntaxe en utilisant << Définir chaque valeur (ne faites pas en sorte que si la valeur est exactement 300, elle sera vide)
Names Default To Here(1);
dt = New Table("Untitled",
Add Rows(9),
Compress File When Saved(1),
New Column("Number", Numeric, "Nominal", Format("Best", 9), Set Values([100, 200, 150, 275, 555, 424, 572, 783, 125])),
New Column("type1", Character(16), "Nominal", Set Values({"a1", "b1", "c1", "d1", "e1", "f1", "g1", "h1", "i1"})),
New Column("type2", Character(16), "Nominal", Set Values({"a2", "b2", "c2", "d2", "e2", "f2", "g2", "h2", "i2"}))
);
dt << New Column("result1", Character, "Nominal", << Set Each Value(
If(:Number < 300,
:type1
, //else
""
)
));
dt << New Column("result2", Character, Nominal, << Set Each Value(
If(:Number > 300,
:type2
, //else
""
)
));
Je suggère fortement de consulter l'index de script directement depuis le menu Aide de JMP et Guide de script de la page d'aide de JMP .Il existe également d'autres sources de script telles que
Introduction au langage de script JMP pour connaître la syntaxe