我知道以下脚本是不正确的:
a = {"a", "b", "b"};
b = [1, 2, 3];
c = [4, 5, 6];
New Table( "SQL Results",
New Column( "a", character, set values( a ) ),
New Column( "b", formula( If( :a == "a", set values( b ), set values( c ) ) ) )
);
我如何更改它以使输出:
一个 1
乙5
乙6
所以第一行检查第 1 列是否为“a”,是则使用 b[1];第二行检查第 1 列是否为“a”,否则使用 c[2];第三行检查第 1 列是否为“a”,否则使用 c[3]。
谢谢你!
以下是如何做你想做的事。请注意,JMP 在引用矩阵 b 的公式中存在问题,因为该公式被解释为引用列 b。这就是为什么我将列名称更改为 b2。
Names Default To Here( 1 );
a = {"a", "b", "b"};
b = [1, 2, 3];
c = [4, 5, 6];
dt = New Table( "SQL Results",
New Column( "a", character, set values( a ) )
);
dt << New Column( "b2",
formula(
If( :a == "a",
b[Row()],
c[Row()]
);
)
);
为了进一步说明作用域问题,如果您确实需要将该列命名为“b”,那么可以指定here:b的完整作用域名称(“here”来自 Names Default to Here( 1 ) )
Names Default To Here( 1 );
a = {"a", "b", "b"};
b = [1, 2, 3];
c = [4, 5, 6];
dt = New Table( "SQL Results",
New Column( "a", character, set values( a ) )
);
dt << New Column( "b",
formula(
If( :a == "a",
here:b[Row()],
c[Row()]
);
)
);