如何计算跨列的一组项目JMP 员工和专家您好,
我有一个简单的问题,我认为 JSL 将是最好的方法,但我不知道如何在 JSL 中编码。 我也许应该找时间学习!
基本上,我有一个项目列表,“茶”,“鸡蛋”,“面包”,“牛奶”等。每个项目单独出现在一列中,列数可以变化,但会在特定的表实例中固定。 每行代表对项目的独立观察。 特定项目可以出现在任何列、任何行中,但只能在一行中出现一次或根本不出现。
我想使用 JSL 脚本来指示新列中特定行中是否存在一组特定的项目(例如“茶”、“牛奶”、“面包”)。 连续出现的顺序并不重要。 但是,我正在计算的一组项目必须全部出现。 我希望使用这个 JSL 作为模板来修改和查询行数最多为 10000 的表中项目集的出现情况。 最终我想得出统计数据,例如:10%的条目有“茶”和“培根”,5%有“茶”,“牛奶”,“酸奶”等
有没有 JMP 平台可以做到这一点?
附件是一个示例数据集。
非常感谢!
自动化和脚本编写数据混合和清理大规模定制质量和工艺工程回复:如何计算跨列的一组项目谢谢@tx尼尔森!
回复:如何计算跨列的一组项目这是一种选择使用关联数组及其集合运算
Names Default To Here(1);
dt = Open("$DOWNLOADS/items.jmp");
list_to_search_for = {"Tea", "Milk", "Bread"};
aa_mask = Associative Array(list_to_search_for);
dt << New Column("Match", Numeric, Continuous, << Set Each Value(
aa_row = Associative Array(dt[Row(), 0]);
temp_mask = aa_mask;
temp_mask << Remove(aa_row);
If(N Items(temp_mask) == 0,
1
,
0
);
));

JMP的消费者研究平台可能也有帮助,但我没有使用过它,所以我不确定它是否可以查找您需要的组合(条件关联可能会有所帮助?)

回复:如何计算跨列的一组项目下面是一个公式,如果在给定行中找到面包和酸奶的组合,则在指示符列中放置 1,如果未找到,则在指示符列中放置 0
dt = Current Data Table();
itemList = dt[Row(), Index( 1, 5 )];
If( Contains( itemList, "Bread" ) & Contains( itemList, "Yoghurt" ),
1,
0
);