Speichern von Variablen in neuen Tabellen und neuen SpaltenIch habe ein Skript geschrieben, das Zeilen findet, in denen col2 und col3 mit bestimmten Strings übereinstimmen, und dann den Wert der Zelle in col7 dieser Zeilen zurückgibt.Ich habe jedoch Probleme, diese Variablen in neue Spalten in neuen Tabellen zu schreiben.
....
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)));
)Hier sind APass und Bpass Variablen, die dem Wert von Spalte7 aus den jeweiligen Suchzeilen entsprechen.Sie sind die Strings Pass und Fail.Wenn ich jedoch die Tabelle erstelle, überschreibt die letzte Funktion und füllt ihre Ergebnisse in der gesamten Tabelle aus. Die Tabelle sollte also Fus1-Pass Fus2-Fail lauten, gibt aber Fus1-Fail Fus2-Fail aus.Umgekehrt, wenn ich die Reihenfolge ändere.
Irgendwelche Hilfe zum Auffüllen einer neuen Spalte mit mehreren Variablen?
Sehr geschätzt
SkriptingFensterBetreff: Variablen in neuen Tabellen und neuen Spalten speichernWie in Ihrer vorherigen Diskussion zu diesem Thema erwähnt, müssen Sie KEINE Formeln für eine Spalte definieren.Hier ist eine einfache Veranschaulichung davon anhand der Big-Class-Datentabelle.Wenn Sie 2 Formeln für eine Spalte definieren, ersetzt die zweite Formel die erste Formel.
new column("two formula", formula(:height), formula(:weight));
Liefert folgende Ergebnisse

Beachten Sie, dass die zweite definierte Formel diejenige ist, die JMP letztendlich verwendet.
Das heißt nicht, dass eine Formel nicht komplex sein kann.Man kann tatsächlich eine Formel definieren, die jede Zeile anders behandelt.Es muss nur in einer Formel definiert werden.Hier ist ein einfaches Beispiel für eine komplexere Formel, die mehrere Spalten in die Formel aufnimmt und zwischen ihnen vergleicht.
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
)
)
)

Betreff: Variablen in neuen Tabellen und neuen Spalten speichernDiese Antwort habe ich SMW privat zur Verfügung gestellt; hoffentlich hilft es anderen.
Versuchen Sie, diesen Code auszuführen.Sehen Sie im Protokollfenster nach, was passiert.Die Get-Zeilen, wobei die Funktion eine Matrix und keine tatsächliche Zeilennummer zurückgibt.Sie müssen die Matrix durchlaufen, um die Zeilenwerte zu verwenden.
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);
);