JSL 使用变量列的最大值创建新的汇总表你好,
一段时间以来,我一直很喜欢在这些讨论页面上阅读和寻找解决方案,但现在一直在摸索着解决这个问题。
我有一个数据表,它提供可变数量的列,由机器自动生成,其中前 14 列始终是相同的识别信息。 其他列,从 15 列开始,是数字连续数据,其中列名将始终变化。
问题是我正在尝试自动创建一个汇总表,该汇总表将根据数据的标识信息对数据进行分组,并且每个数据列都有一个最大数据列。
对于不同数量的数据列和不同的列名,是否可以遍历每一列? 例如将所有最大值放入汇总表的 for 循环? 我无法命名每次拉取的不同列名称的所有列 b/c,但可以肯定地说第 14 列之后的每一列都需要找到的最大值。
这是我一直试图编辑的 JSL 脚本,但在生成 Max 列时遇到了死胡同。
sumdt = table << Summary(
Group(:NAME,:ID),
(Max(Column(table, 15:154)), // having issue on this line
Output Table Name("Summary Max Values")
);
感谢您对我的问题的任何投入!
脚本回复:JSL 使用变量列的最大值创建新的汇总表在最新版本的 JMP 下,代码运行良好。 谢谢!
回复:JSL 使用变量列的最大值创建新的汇总表您好,感谢您的代码。 在这里我发现我只能得到第一个数字列的最大值,高度。 请查看附件。 我猜 Max 只是作用于列表的第一个值。 你能帮我知道为什么吗?
回复:JSL 使用变量列的最大值创建新的汇总表非常感谢@txnelson
那是完美的。 因为我知道要删除哪些列,所以 Remove from() 函数正是我所需要的。
这基本上是完全符合我需要的代码:
Names default to here( 1 );
// Open Data Table: big class.jmp
// → Data Table( "big class" )
dt = Open( "$SAMPLE_DATA/big class.jmp" );
colNamesList = dt << get column names( continuous, string );
Remove From(colNamesList, 1,2 ); //removes first two columns that I don't want evaluated
sumdt = dt << summary(
Group( :Sex, :Age ),
max( colNamesList ),
Output Table( "Summary Max Values"),
Link to Original Data Table( 0 )
);
回复:JSL 使用变量列的最大值创建新的汇总表创建 colNamesList 后,您可以使用 Remove From() 函数删除列表中的特定行,然后一旦列表被缩减为您想要的列,您就可以使用它来生成摘要表。
有关 Remove From() 函数的定义和示例,请参阅脚本索引条目
回复:JSL 使用变量列的最大值创建新的汇总表谢谢@txnelson ,
这部分解决了我的问题。
我的原始数据表包含我不想分析最大值的日期列,基本上遇到了我不想计算前 14 列的最大值的问题,无论它们的数据类型如何。
有没有办法忽略前 14 列,或者创建一个新表会更容易,先删除不需要的列,然后再将其传递给汇总表?
谢谢,
格洛丽亚
回复:JSL 使用变量列的最大值创建新的汇总表下面是一个使用 Big Class 示例数据表执行所需操作的示例。
Names default to here( 1 );
// Open Data Table: big class.jmp
// → Data Table( "big class" )
dt = Open( "$SAMPLE_DATA/big class.jmp" );
colNamesList = dt << get column names( continuous, string );
sumdt = dt << summary(
Group( :Sex, :Age ),
max( colNamesList ),
Output Table( "Summary Max Values"),
Link to Original Data Table( 0 )
);
