Ersetzen einer leeren Zeile durch andere Zeilendaten mit einer if-AnweisungHallo,
Ich habe einen Originaldatensatz (Tabelle 1) und versuche, ihn auf das Ergebnis in Tabelle 2 zu übertragen.
Wenn eine Zahl unter 300 liegt, wird die Zeichenfolge „Typ1“ in die Spalte „Ergebnis1“ gedruckt.
Wenn eine Zahl über 300 liegt, wird die Zeichenfolge „Typ2“ in die Spalte „Ergebnis2“ gedruckt.
| Nummer |
Typ 1 |
Typ 2 |
Ergebnis1 |
Ergebnis2 |
| 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 |
|
|
Tabelle 1: Originaldaten
| Nummer |
Typ 1 |
Typ 2 |
Ergebnis1 |
Ergebnis2 |
| 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 |
|
Tabelle 2: Ergebnis
Was ich bisher an meinem Skript gemacht habe, wird unten gezeigt.
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, "")
);
Erweiterte statistische ModellierungAutomatisierung und SkripterstellungMassenanpassungErgebnisse teilen und kommunizierenBetreff: Ersetzen einer leeren Zeile durch andere Zeilendaten mit einer if-AnweisungIch persönlich finde, dass es verwirrend und ineffizient ist, solche Probleme mit einem Excel-ähnlichen Ansatz anzugehen, bei dem die neuen Spalten mit individuellen Formeln erstellt werden, die auf jede Spalte angewendet werden.Die Fähigkeit von JMP, Datentabellenwerte im „offenen“ JSL-Code direkt zu ändern, kann genutzt werden, um das Problem sauberer und effizienter zu lösen.
// 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 ) );
Betreff: Ersetzen einer leeren Zeile durch andere Zeilendaten mit einer if-AnweisungHallo jthi, alles klar, ich werde die Hilfeinformationen ausprobieren. Das Skript funktioniert. Danke für die Hilfe.
Betreff: Ersetzen einer leeren Zeile durch andere Zeilendaten mit einer if-AnweisungEs gibt einige Probleme bei der Verwendung von >>/<< als Vergleich und der Verwendung von For Each Row innerhalb der Spaltenerstellung. Nachfolgend finden Sie eine Option für die Arbeitssyntax mit << Set Each Value (achten Sie darauf, dass der Wert leer ist, wenn er genau 300 beträgt).
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
""
)
));
Ich empfehle dringend, den Skriptindex direkt im Hilfemenü von JMP auszuprobieren Skripthandbuch von der JMP-Hilfeseite .Es gibt auch andere Skriptquellen wie z
Einführung in die JMP-Skriptsprache um die Syntax kennenzulernen