JSL:获取数据表列的唯一值你好,
我目前使用摘要命令来获取数据表列的唯一值,在我看来,这对于这个简单的任务来说太复杂了。 我认为必须有一个更简单的命令适用于数据表列或向量,但我找不到。 我对吗?
我当前的代码如下所示:
// sample data set:
dt = New Table( "dt" );
dt:"Column 1" << setvalues( [1, 1, 2, 7, 7, 4, 5, 1, 5] );
// use summary to get unique values:
dt_sum = dt << summary( group( :Column 1 ), N, outputtablename( "dt_sum" ) );
unique_values = dt_sum:"Column 1" << getvalues;
达赫拉
回复:JSL:获取唯一值您好,使用数组中的键来选择或过滤具有相同键但位于不同 JMP 表中的行的方法是什么。 我有两张桌子。 其中之一将化学测试的样本 ID 映射到不同的因素设置(温度、时间、研究编号等)。 我成功地获取了数组中的样本 ID。 (抱歉,我对此完全是新手。)
smplID = Associative array(:sampleid) << Get Keys;
现在我想使用这些键选择第二个表中的行(我的响应所在),反转行选择并删除行。 也许下面的解决方案,正如这里所描述的,更适合从?
Summarize(dt, smpleID = by(:sampleid));
或者可能这种方法更可取吗?
dt << Summary (Group ( :sampleid ), Frequ( "None" ), Weight( "None" );
无论如何,我真正想知道的是,在进一步进行数据分析之前,如何使用这些方法中的任何一种来有效地清理数据表中不需要的行。
编辑:讨论并解决这里。
回复:JSL:获取数据表列的唯一值尝试总结一下...
总结可以做更多...请参阅脚本文档。
有几个缺点。
- 尽管汇总的列可能是数字,但返回的列表包含字符值。
- 与 1 相关,数值的精度根据列宽被截断。
// sample data set:
dt = newtable("dt");
dt:"Column 1" << setvalues([1, 1, 2, 7, 7, 4, 5, 1, 5]); summarize(unique_values=by(Column 1));
show(unique_values)
但是......这里有一个解决缺点的方法:
summarize(unique_values=by(Column 1), unique_numeric_values=(max(Column 1)));
show(unique_values, unique_numeric_values)
回复:JSL:获取唯一值研究这个例子:
Names Default to Here( 1 );
dt = Open( "$SAMPLE_DATA/Big Class.jmp" );
values = dt:age << Get Values;
array = Associative Array( values );
array << Get Keys;
回复:JSL:获取唯一值您可以尝试 Summarize(),然后简单地循环遍历返回的列表并使用 num() 函数将字符串值更改回数字。
您可以创建一个新列,在其中使用公式
:变量* 100
然后将数据从关联数组中转换出来
您可以创建一个新列,将值转换为字符回复:JSL:获取唯一值感谢@Mark_Bailey提供的这个精彩而简短的解决方案。
它通常有效,但在以下情况下无效:
values = {0.111, 0.222, 0.333}; // This is actually something like: values = Column(SomeList[1]) << Get Keys
N Items(Associative Array(values)) // gives 1
JMP 在创建关联数组时会忽略小数位。(使用 JMP 12)
我如何使用关联数组来解决这个问题,以便 N Items 返回 3 而不是 1?
回复:JSL:获取唯一值谢谢您的帮助!总结工作顺利!
达赫拉回复:JSL:获取唯一值还:
unique values = Associative Array( col ) << Get Keys
回复:JSL:获取唯一值如果您想以数据表格式保存数据,那么 Summarize 可以很好地发挥作用。
如果您想在列表中工作, @Mark_Bailey建议的关联数组会很好用。回复:JSL:获取数据表列的唯一值为初学者(我)的 JMP 用户提出一个摘要解决方案。
在此示例中,我们需要从客户订单列表中获取特定成品的列表。我不会链接表格,而是为输出表命名。
在原始数据表上,转到“表格”->“摘要”

将“成品”从选定列拖到右侧的“组中”。
为输出表命名,在本例中为 UniqueFG。
取消选中“链接到原始数据表”。
单击“操作”****“确定”****。

生成的数据表是所有唯一 FG 和行数的列表。
单击编辑源脚本。
它看起来会像这样。
Data Table( "Test" ) <<
Summary(
Group( :Finished Good ),
Freq( "None" ),
Weight( "None" ),
Link to original data table( 0 ),
output table name( "UniqueFG" )
)
复制该代码。
在原始数据表中创建一个新脚本并粘贴代码。我稍微修改了代码,使其更加灵活/可扩展,并在下面的注释中进行了注释。
//Creates a list of unique FG #s to feed to SAP to get unit weights and carton quantities
Names Default to Here(1);
dt = current data table();
dt <<
Summary(
Group( :Finished Good ), //this is the column from which you want unique values
Freq( "None" ),
Weight( "None" ),
Link to original data table( 0 ), //this turns off table linking
output table name( "UniqueFG" ) // this is the name of the new datatable
)
节省。
如果这是一个好的方法或代码结构,请随时告诉我。谢谢!