从列表中获取不同的条目?有没有一种简单的方法来获取列表中的不同条目?(类似于通过分组列来汇总表格以便在该列中获取不同的条目)
结果可能是仅包含不同条目(删除重复条目)的简化列表,或者仅仅是显示不同条目数量的数字。
在编写脚本之前,我想检查是否有简单的方法/函数/公式。在 JMP 帮助中找不到任何内容...
自动化和脚本基础数据分析与建模数据混合和清理数据探索与可视化回复:从列表中获取不同的条目?一种方法是使用关联数组
names default to here(1);
// Create a list
dt=
// Open Data Table: Big Class.jmp
// → Data Table( "Big Class" )
Open( "$SAMPLE_DATA/Big Class.jmp" );
genderList = :sex << get values;
// Get the distinct list of values
distinctList = (associative array(genderList))<<GET keys=""></GET>
{"F", "M"}
回复:从列表中获取不同的条目?太棒了,这有效!非常感谢吉姆!
回复:从列表中获取不同的条目?通过关联数组的方法很容易编写/记忆/应用。
如果您想要获取 mio 个值列表中的不同值,请多加小心。
解决方法:
将值保存到表中并使用汇总或上面提到的表/汇总。
也许,将来,JMP 中会有直接/快速的方法来计算唯一值?
我将这个希望作为子主题添加到Col N 类别中 - 以及所有其他类别中......
请支持该想法并投票:)
回复:从列表中获取不同的条目?实际上,我的问题是我想检测表中字符串序列中的唯一条目。这里我附上了一个例子:最初我有列“sequence”(任意分隔符,这里的分隔符是“|”)。我现在的实际解决方法是将其转换为列表,然后将 Jim 的解决方案与关联数组一起应用。但如果有一种简单的计算唯一值的方法,我将不胜感激……
回复:从列表中获取不同的条目?噢,是的,这就是关联数组的痛点!
最后,您要对条目进行计数。这是您所需要的吗?还是您还需要中间步骤(使用唯一条目列表)?
一种快速简便的处理唯一值的方法 - 希望 JMP 开发人员能够认识到这个主题确实有用。这样它就能在下一个版本中实现...
回复:从列表中获取不同的条目?对于我当前的应用程序,我只需要不同条目的数量,而不是值本身。但我认为在更多情况下,将列表缩减为唯一条目会有所帮助。
是的,希望在下一版本中实现:)
回复:从列表中获取不同的条目?至于速度,我只是检查了一下,如果我用一个简单的
如果(不(包含(),则插入(mylist ... - 没有好处。
New Column( "unique entries",
Expression,
Formula(
Local( {nr = N Rows( Current Data Table() )},
If( Row() == nr,
Caption( "done" )
);
Match( :variant,
1, Associative Array( :list from sequence[Empty()] ) << get keys,
2,
myList = {};
For Each( {entry}, :list from sequence,
If( !Contains( myList, entry ),
Insert Into( myList, entry )
)
);
myList;
);
)
)
)
对于 100 万行,我得到:

因此关联数组为 1:0。还有更好的主意吗?
[Another 2+2 seconds are needed for the columns :list from sequence and :N 个唯一条目。
So, no real benefit to get into the ms regime for the intermediate step]
回复:从列表中获取不同的条目?- 简单的
- 快速地
和:
- 不贪心
我刚刚尝试检查 1000 万行的时间 - 但卡住了。
JMP 崩溃并且最后 60 秒如下所示:

回复:从列表中获取不同的条目?...因此,我刚刚尝试了 500 万行 - 并得到了一个有趣的见解:

当我保存表格、关闭 JMP 并再次加载表格时,内存使用量明显小于计算值所需的内存使用量!
乍一看,我认为这是由于关联数组造成的,但是当我使用mylist时也发生了同样的事情。
我怎样才能防止列公式占用我的内存?
TS-00177710
回复:从列表中获取不同的条目?这是我之前写的一个唯一值函数:
/*
Function Name: get_unique_values
Description: Find the unique values in a list. Uses an associative array
Arguments:
in_list List to get unique values for
*/
Get_unique_values = Function( {in_list},
{Default Local},
tmp = [=> 0];
Insert Into( tmp, in_list );
tmp << get keys;
);
示例调用:
a = {1, 1, 1, 2, 3, 3, 3};
b = get_unique_values(a);
print(b);
c = {"Hello", "World", "John", "Ed", "John", "World"};
d = get_unique_values(c);
print(d);
输出:
{1, 2, 3}
{"Ed", "Hello", "John", "World"}回复:从列表中获取不同的条目?您的序列有多复杂(它们只是单个字母吗?)?您事先知道它们可能是什么吗?序列可以有多长?
对于仅计算条目数量,您可以使用 N 项 + 关联数组和单词的组合
N Items(Associative Array(Words(:sequence, "|")))
部分相关提供从 JMP 对象(列、列表)获取唯一值的快速方法,可能类似于 Python 的 Set
回复:从列表中获取不同的条目?
@jthi wrote:N Items(Associative Array(Words(:sequence, "|")))
也许我错了,但这个建议与@katharina_l发布的建议非常相似
https://community.jmp.com/t5/Discussions/Get-distinct-entries-from-a-list/mp/820530/highlight/true#M99918 ? ?
回复:从列表中获取不同的条目?谢谢 Holger,是的,这看起来确实是我正在寻找的函数。如果它可以作为 JMP 中的标准函数实现,那就太好了。
回复:从列表中获取不同的条目?Col N 类别将随 JMP19 一起提供。
对于获得独特物品,有一个单独的愿望 - 等待荣誉。