我編寫了一個腳本,用於查找 col2 和 col3 匹配特定字符串的行,然後返回這些行的 col7 中單元格的值。但是,我在將這些變量寫入新表中的新列時遇到問題。
....
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)));
)這裡,APass 和 Bpass 是等於來自各個搜索行的 column7 值的變量。它們分別是字符串 Pass 和 Fail。但是,當我創建表時,最後一個函數會覆蓋並填充整個表中的結果。 所以表應該是Fus1-Pass Fus2-Fail,但是輸出Fus1-Fail Fus2-Fail。當我改變順序時相反。
有關如何使用多個變量填充新列的任何幫助?
非常感激
正如您之前關於此主題的討論所述,您不能必須為列定義公式。這是使用大類數據表的簡單說明。如果您為一列定義了 2 個公式,則第二個公式將替換第一個公式。
new column("two formula", formula(:height), formula(:weight));
給出以下結果

請注意,定義的第二個公式是 JMP 最終使用的公式。
現在,這並不是說公式不能複雜。人們實際上可以定義一個公式,以不同的方式對待每一行。它只需要在一個公式中定義。這是一個更複雜的公式的簡單示例,該公式將多個列帶入公式,並在它們之間進行比較。
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
)
)
)

我私下向 SMW 提供了此回复;希望它會幫助別人。
嘗試運行此代碼。在日誌窗口中查看會發生什麼。get rows where 函數返回一個矩陣,而不是實際的行號。您必須遍歷矩陣才能使用行值。
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);
);