查找值并分类你好,
我有一个问题,我需要对一些数据进行分类。 如果有一个自动化的过程,要分类的值的选择会容易得多。 问题是这样的:有 3 列的表(1 个类别,2 个深度测量,3 个数据点)。
1)我想分别为每个湖泊获得低于 0,5 的那些(参见示例文件列 2)。 这意味着,0,5 不应包含在选择评估中。
2)此外,我想通过分别为第 1 列的每个名称选择包含最多数据的三个最深值,将第 2 列中找到的值排序在具有最多数据点(N,第 3 列)的值之后。
3)为了对它们进行分类,我想创建一个新列,并为那些数据最多的列添加一个 1/2/3 到这三个列中数据最少的列。 如果发现两个深度的数据点数量相等,则较深的应归类为 1 或 2。
请参阅示例文件以获得更好的理解:-)。
提前感谢您提供的任何解决方案,如果可以使用 jsl 的话。
回复:查找值和分类你好@Pacco ,
您是否偶然使用 JMP 12(或更早版本)? Col Rank() 在 JMP 13 中进行了更改,以允许 Xan 使用的附加参数。
从文档:
JMP 12:
Col Rank(column)
联合会议 13:
Col Rank(column, <BYVAR>, <<TIE></TIE></BYVAR>
回复:查找值和分类当我运行脚本然后使用
dt << Subset( Copy formula( 0 ), Selected Rows( 1 ), Selected columns only( 0 ) )
我明白了
所有列都确实排名,但在 Stationsnamn 和 isBelow05 的唯一值内。 这由 Col Rank() 的第二个和第三个参数控制。 如果您希望将站点排列在一起,您可以通过变量从 Col Rank() 参数中删除它。
回复:查找值和分类我可以问一下结果如何吗? 我的排名整个列。 但是,我正在寻找对每个部分进行排名(每批同名,请参见 Stationsnamn 列)。
回复:查找值和分类感谢您的想法,“抑制评估”选择和取消选择有所帮助。 但是,等待 5 并没有改变任何东西!

回复:查找值和分类我不确定是什么导致了您的问题。当我打开您在上次回复中提供的数据表时,我看到了您的问题。我可以通过右键单击 Rank 的列标题并选择 Column Info 来更正此问题。它会打开“列信息”窗口。如下图所示选择“Suppress Eval”,然后点击“Apply”按钮。取消选择“Suppress Eval”,然后再次单击“Apply”按钮,看看它是否更正了列中的值

我希望您尝试的另一件事是删除“isbelow05”和“rank”列,然后运行以下脚本。
dt = Current Data Table();
dt << New Column( "isbelow05", formula( :Profildjup <= 0.5 ) );
wait(.5);
dt << New Column( "rank", formula( Col Rank( -(:n rows + :Profildjup), :isbelow05, :Stationsnamn ) ) );
dt << select where( :isbelow05 & :rank <= 3 );
如果它有效,问题可能是您的“isbelow05”公式在生成“rank”列之前没有完成,它会导致问题。这
wait(.5);
正在给它时间来完成列“isbelow05”的创建
回复:查找值和分类嗯,这很奇怪。 我刚刚再次从这里下载了示例文件(不同之处在于我选择了一个额外的列),但是,即使我上传的示例文件也显示了我之前发布的相同错误。 但是,现在它在下面的 0,5 列中用 1 标记了表面值。 (见附件)
我也可以简化这个问题。 然后,只需要根据每个湖名部分的最高数字排名来选择和分类值。
回复:查找值和分类Xan 包含的脚本非常适合您附加的示例数据。您的真实数据和您附加的示例数据表有什么不同?
回复:查找值和分类你好,格雷格,
感谢您的回复和脚本。 不幸的是,它不适用于我的数据。 结果是两个新列,第一列中没有数据,第 2 列的第一个单元格中只有一个条目(“4,20533670002011e-315”)。
知道可能出了什么问题吗?
回复:查找值和分类如果我理解正确,这样的事情应该会有所帮助。
dt = Current Data Table();
dt << New Column( "isbelow05", formula( :Profildjup <= 0.5 ) );
dt << New Column( "rank", formula( Col Rank( -(:n rows + :Profildjup), :isbelow05, :Stationsnamn ) ) );
dt << select where( :isbelow05 & :rank <= 3 );
如果深度“低于”是指数值更大,则将“<= 0.5”更改为“>= 0.5”。 感谢您提供示例文件。