Salut,
Je travaille avec des données qui ressemblent à ceci. Je veux créer une instruction IF dans une nouvelle colonne, en disant que si le DOW (jour de la semaine) est lundi, il doit entrer la valeur dans la colonne "T-28", si mardi, puis entrer la valeur dans "T-12 " etc. Comment puis-je faire cela?
SI(DOW=="Lun",???)

Pour faire la formule de la colonne, vous pouvez utiliser le si déclaration ou la correspondre déclaration; la syntaxe match est un peu plus facile à lire :
New Table( "example",
New Column( "DOW", character, Set Values( {"Mon", "Tue", "Wed", "Thu"} ) ),
New Column( "T-28", Set Values( [38, 35, 26, 28] ) ),
New Column( "T-21", Set Values( [45, 47, 43, 48] ) ),
New Column( "T-14", Set Values( [60, 65, 54, 65] ) ),
New Column( "T-13", Set Values( [63, 68, 62, 70] ) ),
New Column( "T-12", Set Values( [65, 78, 72, 72] ) ),
New Column( "T-11", Set Values( [70, 82, 72, 72] ) ),
New Column( "Conditional",
Formula(
Match( :DOW,
"Mon", :Name( "T-28" ),
"Tue", :Name( "T-21" ),
"Wed", :Name( "T-14" ),
"Thu", :Name( "T-13" ),
-9999 // else...use . for missing value
)
)
)
)
Parce que les noms de colonne contiennent des traits d'union (soustraire), ils ont besoin du wrapper name().
Avec une instruction if :
New Table( "example",
New Column( "DOW", character, Set Values( {"Mon", "Tue", "Wed", "Thu"} ) ),
New Column( "T-28", Set Values( [38, 35, 26, 28] ) ),
New Column( "T-21", Set Values( [45, 47, 43, 48] ) ),
New Column( "T-14", Set Values( [60, 65, 54, 65] ) ),
New Column( "T-13", Set Values( [63, 68, 62, 70] ) ),
New Column( "T-12", Set Values( [65, 78, 72, 72] ) ),
New Column( "T-11", Set Values( [70, 82, 72, 72] ) ),
New Column( "Conditional",
Formula(
if(
:DOW=="Mon", :Name( "T-28" ),
:DOW=="Tue", :Name( "T-21" ),
:DOW=="Wed", :Name( "T-14" ),
:DOW=="Thu", :Name( "T-13" ),
-9999 // else...use . for missing value
)
)
)
)
The else value handles unknown day namesThe else value handles unknown day namesLa valeur else gère les noms de jours inconnus
JMP préférerait vraiment utiliser . pour une valeur manquante au lieu de -9999 ; Je l'ai utilisé pour cette démo afin que l'effet soit clair.
Vous pouvez également utiliser l'éditeur de formules au lieu de JSL ; cliquez sur le + à côté de la colonne Conditionnel dans le panneau de gauche du tableau de données (ci-dessus) pour voir l'éditeur de formule (ci-dessous) :
The Formula Editor has a list of functionsThe Formula Editor has a list of functionsL'éditeur de formule a une liste de fonctions
Si secrets article de blog
Il est utile de comprendre plusieurs fonctions. J'aime utiliser la puissance des listes et je préfère ne pas utiliser de fonctions dans mes tables, sauf si j'attache un script pour définir les valeurs d'une colonne.
Names Default To Here( 1 );
dt = New Table("example",
New Column("DOW", character, values({"Mon", "Tue", "Wed", "Thu" }) ),
NewColumn("T-28", numeric, values({38,35,26,28})),
NewColumn("T-21", numeric, values({45, 47, 43, 48})),
NewColumn("T-14", numeric, values({60, 65, 54, 65})),
NewColumn("T-13", numeric, values({63, 68, 62, 70})),
NewColumn("T-12", numeric, values({65, 78,72,72})),
NewColumn("T-11", numeric, values({70,82,72,72}))
);
dt << newColumn("Conditional", numeric);
dowlist = {"Mon", "Tue", "Wed", "Thu", "Fri", "Sat"};
clist = {"T-28", "T-21", "T-14", "T-13", "T-12", "T-11"};
dt:Conditional << set each value( Column(dt,clist[Contains(dowlist, :DOW)])[] ) ; 
@anjana ,
Je vous conseille de regarder ici. Il s'agit d'une ressource très utile pour comprendre comment utiliser différentes fonctions dans JMP

Voici un exemple, qui dit si x est la valeur que vous essayez d'attribuer à l'une des colonnes, alors si la valeur dans la colonne DOW = "Mon", attribuez la valeur de x à la colonne "T-28" , sinon affectez-le à la colonne "T-12"
:Name("T-28") = x ; <BR /> , <BR /> // else <BR /> :Name(T-12) = x; <BR /> ); If(:DOW == "Mon",
// then <BR />