我有两个从数据集中提取的列表,一个列表包含列名,另一个列表包含根据特定条件提取的某些值(每列一个值)。
List1 = {Wweight, O2 Uptake.......};
List2 = {38,59.08.......};
在此步骤之后,用户将获得如下所示的 JMP 表作为输出,其中包含是否删除脚本提取的值的选项:

用户要么从主表中删除该值,要么决定保留它。
我进一步尝试做的是:
1) 我运行一个脚本来查找最小值,如果该值与该列的值匹配(这意味着用户决定保留该值),我想获得下一个最小值
2)如果不是,我按原样提取最小值。
dt = current data table();
colNamesList = dt << get column names( string, numeric, continuous );
nc = N Items( colNamesList );
Names = {};
MinVals = {};
MinValList = {};
For( i = 1, i <= nc, i++,
Cols = Column( dt, i );
Insert into(Names, colNamesList[i]);
MinValue = Col Min( Cols );
Insert into(MinVals, MinValue);
MinRows = dt << get rows where( As Column( Cols ) == MinValue );
Insert into(MinValList, MinRows[1]);
);
dt1 = new table( "Data",
New Column( "Column Name", character, nominal, values(Names)),
New column( "Min value", numeric, nominal, values( MinVals)),
New Column( "Row Number", expression, nominal, values( MinValList ));
);如何匹配值以检查每一行用户是否已删除该值?
//Second Part
For( i = 1, i <= nc, i++,
Cols = Column( dt, i );
colMin = Col Min( Cols );
//If value in Col min is equal to value in MinValue, then skip that value and choose the next minimum value, else add that value to a new list
@cwillden对不起,它仍然不适合我。 我只想检查 Linnerud 表的列中是否仍然存在最小值。 但是我无法使该脚本起作用。
我可能应该在 row_temp 的定义末尾包含一个“[1]”。 抱歉,我在这里有点草率,并没有通过 JMP 使用示例数据表实际运行它。在添加 [1] 之前,请确保将整个内容括在括号中。
(row_tmp <SPAN class="token operator">=</SPAN> dt1 <SPAN class="token operator"><</SPAN><SPAN class="token operator"><</SPAN><SPAN class="token messages"> Get Rows Where</SPAN><SPAN class="token punctuation">(</SPAN><SPAN class="token punctuation">:</SPAN>Column Name <SPAN class="token operator">==</SPAN> Cols<SPAN class="token punctuation">))[1]</SPAN><SPAN class="token punctuation">;</SPAN>
您可能也在与名称对象而不是字符串进行比较。要将列名作为字符串,请尝试以下操作:
Cols = Column(dt, 1) << Get Name;
我认为通过这两项更改,它应该会起作用。
你可以这样做:
For( i = 1, i <= nc, i++,
Cols = Column( dt, i );
colMin = Col Min( Cols );
//If value in Col min is equal to value in MinValue,
//then skip that value and choose the next minimum value, else add that value to a new list
//get the corresponding row in the table (if it doesn't align with the index of your loop)
row_tmp = dt1 << Get Rows Where(:Column Name == Cols);
if(Min value[row_tmp] == colMin,
//Insert Code to look for next smallest value
)
)
row_tmp 获取 dt1 中 Column Name 的值与 Cols 中的当前列名匹配的行。