根据多个条件选择行
问题
假设您希望在数据表中选择满足多个条件的行。 或者,您可能想要选择满足几个条件之一的行。
解决方案
以下示例演示了如何将逻辑 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"
)
)
)
)