根據多個條件選擇行
問題
假設您希望在數據表中選擇滿足多個條件的行。 或者,您可能想要選擇滿足幾個條件之一的行。
解決方案
以下示例演示瞭如何將邏輯 AND (&) 和 OR (|) 運算符與 Select Where 消息一起使用來選擇滿足多個條件的行。有關詳細信息,請參閱嵌入的評論。
/* Open a sample data table */
dt = Open( "$SAMPLE_DATA\Big Class.jmp" );
/* Select rows where students are over 13, who are also less than 65 inches tall */
dt << Select Where( :age > 13 & :height < 65 );
Wait( 2 ); // For demonstration purposes
/* Select rows where students are either 12 or 14 years old */
dt << Select Where( :age == 12 | :age == 14 );
Re: 根據多個條件選擇行@rishdude23
列公式本機遍歷行。因此,For() 循環是不必要的。Lag() 函數將返回前一行中參數的值。所以這樣的事情可能對你有用。
Formula(
If(
(:age == Lag( :age, 1 )) & (:sex == Lag( :sex, 1 )), "Same age, same gender",
(:age != Lag( :age, 1 )) & (:sex == Lag( :sex, 1 )), "Diff age, same gender",
(:age == Lag( :age, 1 )) & (:sex != Lag( :sex, 1 )), "Same age, diff gender",
(:age != Lag( :age, 1 )) & (:sex != Lag( :sex, 1 )), "Diff age, diff gender"
)
)
希望有所幫助。
這個問題與使用 Select Where() 無關,而是與列公式有關。諸如此類的問題最好定向到一般的討論區,許多腳本編寫者可以在其中做出回應。
Re: 根據多個條件選擇行@Wendy_Murphrey
你好,
我正在嘗試向名為“AgeSex_comp”的大數據 jmp 文件寫入一個新列,其中包含一個 for long 和一些條件的公式。 我想將上一行的年齡和性別信息與下一行進行比較,看它們是否相同或不同。 這是我寫的腳本,它不起作用。 我哪裡出錯了?
dt = current data table();
dt << NewColumn("AgeSex_Comp", Character, Nominal, Formula(
FOR(i=1, i<= N Row(dt), i++,
if((:age[Row(i)] == :age[Row(i+1)]) & (:sex[Row(i)] == :sex[Row(i+1)]),"Same age, same gender",
(:age[Row(i)] != :age[Row(i+1)]) & (:sex[Row(i)] == :sex[Row(i+1)]),"Diff age, same gender",
(:age[Row(i)] == :age[Row(i+1)]) & (:sex[Row(i)] != :sex[Row(i+1)]),"Same age, diff gender",
(:age[Row(i)] != :age[Row(i+1)]) & (:sex[Row(i)] != :sex[Row(i+1)]),"Diff age, diff gender"
)
)
)
)