使用公式排序和添加新列你好,
我想按降序对 N 行列进行排序,并添加一个新列来显示 N 行总数的百分比。请帮我解决jsl脚本

<< Summary(
Group(
:Open VIO,
:Open SCLK,
:Open SDATA,
:Open USID,
:Open RF1,
:Open RF2,
:Open RF3,
:Open RF4,
:Open RFC
),
Freq( "None" ),
Weight( "None" )
)
谢谢,
杰克
自动化和脚本编写回复:使用公式排序和添加新列@txnelson
回复:使用公式排序和添加新列这是一个有效的脚本。请注意,由于 JMP 会生成您需要的 jsl,因此当您交互运行时,您应该能够创建自己的代码。
Data Table( "original data" ) << Summary(
Group(
:Open VIO, :Open SCLK, :Open SDATA, :Open USID, :Open RF1, :Open RF2,
:Open RF3, :Open RF4, :Open RFC
),
"% of Total"n,
Freq( "None" ),
Weight( "None" ),
Link to original data table( 0 ),
output table( "Summarized Table" )
);
Data Table( "Summarized Table") << sort(by(:N Rows), order(descending), replace table(1));
回复:使用公式排序和添加新列帮助菜单下的脚本索引在这里为您提供了一些有用的信息。我以这种方式搜索“排序”:

如果您对用于 % Total 列的公式感到满意,则可以使用脚本索引查找函数以在数据表中创建新列。或者,您可以使用脚本工具加载项将名为“复制列脚本”的功能安装到 cols 菜单。 然后您只需选择该列,复制脚本,然后将其粘贴到您的脚本中。 如果我理解您对该列的要求,尽管您可以将 N Row 列除以 N Row 列的总和。
把它们放在一起可能看起来像这样:
Names default to here(1);
// The function from your example:
dtSummarized = dt << << Summary(
Group(
:Open VIO,
:Open SCLK,
:Open SDATA,
:Open USID,
:Open RF1,
:Open RF2,
:Open RF3,
:Open RF4,
:Open RFC
),
Freq( "None" ),
Weight( "None" )
);
// dtSummarized = Current Data Table();
// From Scripting Index
dtSummarized << Sort( replace table, By( :N Rows ), Order( Descending ) );
// From Scripting Tools Add-in
New Column("% Total", Numeric, "Continuous", Format("Percent", 12, 2), Formula(:N Rows / Col Sum(:N Rows)), Set Display Width(44));