Re:如何从If语句扩展行选择你的问题有几种不同的解释,但我希望我解决的问题是正确的。 看一下我的剧本,告诉我你是不是想到了什么
Names Default To Here( 1 );
dt = New Table( "IfSelRows",
Add Rows( 15 ),
Compress File When Saved( 1 ),
New Column( "G1",
Character( 1 ),
"Nominal",
Set Values( {"A", "A", "A", "A", "A", "B", "B", "B", "B", "B", "C", "C", "C", "C", "C"} ),
Set Display Width( 76 )
),
New Column( "D1",
Numeric,
"Continuous",
Format( "Best", 12 ),
Set Values( [1, 1, 1, 1, 1, 1, 2, 1, 1, 1, 0, 0, 0, 0, 0] ),
Set Display Width( 58 )
)
);
// Get the rows where D1 > 1
d1Rows = dt << get rows where( :D1 > 1 );
// Create a list with the values of G1 for the rows that have been selected
g1Values = {};
If( N Rows( d1Rows ) > 0,
For( i = 1, i <= N Rows( d1Rows ), i++,
Insert Into( g1Values, dt:G1[d1Rows[i]] )
)
);
// Select the rows where any of the values in the g1List exist
dt << select where(contains(g1Values,:G1));
Re:如何从If语句扩展行选择感谢Jim的快速回复。你的问题是对的。您的脚本提供了我正在寻找的内容。
Re:如何从If语句扩展行选择再次感谢代码。它按预期工作。必须更改或添加到代码中以将其用作公式列?
中写道:
你的问题有几种不同的解释,但我希望我解决的问题是正确的。 看一下我的剧本,告诉我你是不是想到了什么
名称默认为此处(1); dt =新表(“IfSelRows”,添加行(15),保存时压缩文件(1),新列(“G1”,字符(1),“标称”,设置值({“A”,“A” ,“A”,“A”,“A”,“B”,“B”,“B”,“B”,“B”,“C”,“C”,“C”,“C”,“ C“}),设置显示宽度(76)),新列(”D1“,数字,”连续“,格式(”最佳“,12),设置值([1,1,1,1,1,1] ,2,1,1,1,0,0,0,0,0]),设置显示宽度(58))); //获取D1> 1的行d1Rows = dt <<获取行所在的位置(:D1> 1); //为已选择的行创建一个值为G1的列表g1Values = {};如果(N行(d1Rows)> 0,For(i = 1,i <= N行(d1Rows),i ++,Insert Into(g1Values,dt:G1 [d1Rows [i]]))); //选择g1List中任何值存在的行dt << select where(contains(g1Values,:G1));再次感谢代码。它按预期工作。必须更改或添加到代码中以将其用作公式?
Re:如何从If语句扩展行选择我不确定你想用公式版本做什么。 也就是说,您期望在新专栏中出现什么价值,但下面是我对您可能想要做的事情的猜测。
仅供参考,公式版本不如脚本版本高效,因为它必须为每一行执行一次。
If( Row() == 1,
dt = Current Data Table();
d1Rows = dt << get rows where( :D1 > 1 );
g1Values = {};
If( N Rows( d1Rows ) > 0,
For( i = 1, i <= N Rows( d1Rows ), i++,
Insert Into( g1Values, dt:G1[d1Rows[i]] )
)
);
);
If( Contains( g1Values, :G1 ),
x = 1;
Row State( Row() ) = Selected State( 1 );
,
x = 0
);
x;
这是应用公式的数据表脚本
New Table( "IfSelRows",
Add Rows( 15 ),
Compress File When Saved( 1 ),
New Column( "G1",
Character( 1 ),
"Nominal",
Set Values(
{"A", "A", "A", "A", "A", "B", "B", "B", "B", "B", "C", "C", "C", "C",
"C"}
),
Set Display Width( 76 )
),
New Column( "D1",
Numeric,
"Continuous",
Format( "Best", 12 ),
Set Values( [1, 1, 1, 1, 1, 1, 2, 1, 1, 1, 0, 0, 0, 0, 0] ),
Set Display Width( 58 )
),
New Column( "Column 3",
Numeric,
"Continuous",
Format( "Best", 12 ),
Formula(
If( Row() == 1,
dt = Current Data Table();
d1Rows = dt << get rows where( :D1 > 1 );
g1Values = {};
If( N Rows( d1Rows ) > 0,
For( i = 1, i <= N Rows( d1Rows ), i++,
Insert Into( g1Values, dt:G1[d1Rows[i]] )
)
);
);
If( Contains( g1Values, :G1 ),
x = 1;
Row State( Row() ) = Selected State( 1 );
,
x = 0
);
x;
)
)
)Re:如何从If语句扩展行选择我要求公式列,因为数据是由SQL更新的。具有索引号的现有公式列将根据新数据自动更新。
Re:如何从If语句扩展行选择我强烈建议如果您打算继续使用JMP并使用JSL,则需要花时间阅读“脚本指南”中的JSL文档
帮助==>图书==>脚本指南如何从If语句扩展行选择如何在另一个列的相同分组值的if语句中扩展行选择?如果是附件文件,则选择第7行:
dt <<选择其中(:D1> 1);
选择应扩展到列G1中的所有分组值,在这种情况下,所有分组值均为“ B”