如果行列值等于任何数组的任何值,则... 这种形式的一般形式是什么?当行的列值 = 数组中的任何值时,如何编写 If 语句(或任何正确的函数)来评估?
例子:
If( :ColToCheck == [任何这些值] ,则为 1,否则为 0 )
回复:如果行列值等于任何数组的任何值,那么... 这种形式的一般形式是什么?不是直接......这就是我使用 Loc() 的原因。
回复:如果行列值等于任何数组的任何值,那么... 这种形式的一般形式是什么?谢谢你们俩。@txnelson TX昨晚让我度过了难关。我只是将字符转换为数字,它给出了预期的结果。
我认为@vince_faller的解决方案是我正在寻找的。 我用字符试过了,它奏效了
New Column( "Some Check 2",
Numeric,
"Continuous",
Format( "Best", 12 ),<BR /> Formula( !!Contains( {"TIM", "ALICE", "JANE", "UDY"}, :name ) )
),<BR /> // "UDY" is in there to verify contains will not return true for "JUDY"<BR />回复:如果行列值等于任何数组的任何值,那么... 这种形式的一般形式是什么?Names default to here(1);
dt = open("$SAMPLE_DATA\Big Class.jmp");
dt << new Column("Some Check", FOrmula(
//only doing !! so it's negates the output of contains (which is WHERE it is in the list)
!!Contains({59, 63, 48, 70}, :height)
));回复:如果行列值等于任何数组的任何值,那么... 这种形式的一般形式是什么?1. 矩阵只能包含数值。因此,矩阵z需要指定为List,而不是Matrix
2. 我不知道什么是“cust”。
3.这是列公式,还是打开JSL代码?
4. Loc 返回测试值在 List 中的位置矩阵。因此,您需要确定是否返回了超过 0 行以确定是否找到了匹配项。
以下是一些可能对您有所帮助的脚本示例
Names Default To Here( 1 );
dt = Current Data Table();
// As a formula in a new column
dt << New Column( "is present",
formula(
z = {"customer1", "customer2", "customer3"};
If( N Rows( Loc( z, :Name( "Ship-To Customer" ) ) > 0 ),
1,
0
);
)
);
// In open JSL
z = {"customer1", "customer2", "customer3"};
For( i = 1, i <= N Rows( dt ), i++,
If( N Rows( Loc( z, :Name( "Ship-To Customer" )[i] ) ) > 0,
1,
0
);
);回复:如果行列值等于任何数组的任何值,那么... 这种形式的一般形式是什么?谢谢。
我正在尝试做这样的事情。
#1 它需要一个数字。
#2 返回是返回所有缺失值。我尝试了数据类型表达式和数字,无法运行分布以查看是否存在缺失值以外的值。
cust = ["customer1","customer2","customer3"];
If( Loc( As List( cust ), :Name( "Ship-To Customer" ) ),
1,
0
);
//更新 4/26/19
原始帖子没有定义自定义,而是显示
z = ["客户 1","客户 2","客户 3"];
这就是为什么 TXNelson 会问什么是“cust”?
回复:如果行列值等于任何数组的任何值,那么... 这种形式的一般形式是什么?使用 Loc() 函数检查比较时列表中的任何值是否相同。使用矩阵执行此操作时,将矩阵转换为列表。
z=[1,2,3,4];
loc(as list(z),2);