Hallo,
Ich arbeite mit Daten, die so aussehen. Ich möchte eine IF-Anweisung in einer neuen Spalte erstellen, die besagt, dass, wenn der DOW (Wochentag) Mon ist, der Wert in Spalte „T-28“ eingegeben werden soll, wenn Di, dann der Wert in „T-12“ eingegeben werden soll „ usw. usw. Wie mache ich das?
IF(DOW=="Mo",???)

Um die Spaltenformel zu erstellen, können Sie die verwenden Wenn Aussage oder die passen Stellungnahme; Die Match-Syntax ist etwas einfacher zu lesen:
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
)
)
)
)
Da die Spaltennamen Bindestriche (Subtraktion) enthalten, benötigen sie den name()-Wrapper.
Mit einer if-Anweisung:
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 namesDer else-Wert behandelt unbekannte Tagesnamen
JMP würde wirklich lieber verwenden. für einen fehlenden Wert statt -9999; Ich habe das für diese Demo verwendet, damit der Effekt deutlich wird.
Sie können anstelle von JSL auch den Formeleditor verwenden; Klicken Sie auf das + neben der Spalte „Bedingung“ im linken Bereich der Datentabelle (oben), um den Formeleditor anzuzeigen (unten):
The Formula Editor has a list of functionsThe Formula Editor has a list of functionsDer Formeleditor verfügt über eine Liste von Funktionen
Wenn Geheimnisse Blogeintrag
Es ist wertvoll, mehrere Funktionen zu verstehen. Ich nutze gerne die Leistungsfähigkeit von Listen und verwende lieber keine Funktionen in meinen Tabellen, es sei denn, ich füge ein Skript hinzu, um die Werte einer Spalte festzulegen.
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 ,
Ich würde Ihnen raten, hier nachzuschauen. Dies ist eine sehr hilfreiche Ressource, um zu verstehen, wie verschiedene Funktionen in JMP verwendet werden

Hier ist ein Beispiel, das besagt: Wenn x der Wert ist, den Sie einer der Spalten zuweisen möchten, und wenn der Wert in Spalte DOW = „Mon“ ist, weisen Sie den Wert von x der Spalte „T-28“ zu. Andernfalls weisen Sie es der Spalte „T-12“ zu.
:Name("T-28") = x ; <BR /> , <BR /> // else <BR /> :Name(T-12) = x; <BR /> ); If(:DOW == "Mon",
// then <BR />