JMP 脚本 for 循环中的问题你好,我有两个问题——
问题1——
我有一个简单的数据(附后)和一个工作正常的脚本,但只要我想将其转换为 for 循环。 没有得到正确的东西。
AIM - 我想要每个电流的 top10% 电阻值。 我的数据不对称,意味着每个电流的数据点数量不同。
在相同的数据中,只有 7 个当前值,而在实际数据中,可能需要数百个值。
方法——我正在生成一个分位数表,然后将我的电阻值与 90% 分位数值进行比较,并添加一个额外的列“Top10%”。 对于具有 7 个当前值的样本数据,一切正常,但我需要一个循环。 超级用户能否指出我在 for 循环中犯的错误是什么,这将有助于学习如何实现 for 循环。
有什么帮助吗?
问题 2 -- 获取前 95% 数据的最佳方式是什么?
这里有什么帮助吗?
高级统计建模自动化和脚本编写数据探索和可视化大规模定制质量和工艺工程回复:JMP 脚本 for 循环中的问题感谢您清晰而精彩的解释。 对于了解列公式的工作原理非常有帮助。 再次感谢。
回复:JMP 脚本 for 循环中的问题关于您的 For() 循环逻辑
- 一列只能有 1 个公式。在 For() 循环中包含公式定义将为每个循环指定不同的公式。我不知道JMP到底会做什么,充其量,它会在创建新公式时替换每个公式,最终只保留最后创建的公式。
- 通过在每个 If 中设置“失败”值,您的逻辑唯一准确的时间是最后一个级别是否为当前行的级别。否则,假设级别 3 是给定行的当前级别。JMP 会将 If 语句中的值设置为级别 1 为失败,级别 2 为失败,级别 3 为 Top10%,但 For() 循环继续,因此测试级别 4 将导致失败...... ......以及所有其他级别。
- 对于具有在公式之外定义的变量值的列的公式(即 dtF2、dtQ 以及对 dtQ 数据表中列的引用),只要数据表具有公式被打开。因此,在使用此类公式时,您需要做的是,一旦数据表运行了该公式,就删除该公式。
dtF2:Name("Top10%") << delete formula;
这是我认为可行的公式版本......我还没有测试过它,但我认为您会看到该方法。
dtF2 << New Column( "Top10%",
character,
FORMULA(
For( i = 1, N Rows( dtQ ), i++,
x = "";
If( dtF2:Current == dtQ:Level[i] & dtF2:Name( "Res" ) >= dtQ:Name( "90%" )[i],
x = "Top10"
);
);
If( x == "", x = "Fail" );
x;
)
);回复:JMP 脚本 for 循环中的问题是的,完全没问题。 更好、更简单的方法来做到这一点。 我不知道我们也可以从汇总表中获取分位数。 我正在按照您描述的方式实现它。
除了分位数和前 10% 的数据之外,还有什么评论我的“for 循环”出了什么问题吗?
谢谢您的帮助。
回复:JMP 脚本 for 循环中的问题我相信下面的脚本是获得您想要的结果的更简单的方法

Names Default To Here( 1 );
dtF2 = Data Table( "Final_Data" );
dtSum = dtF2 << Summary(
invisible,
Group( :Current ),
Quantiles( 90, :Res ),
Freq( "None" ),
Weight( "None" ),
statistics column name format( "stat" ),
link to original data table( 0 )
);
dtSum << delete columns( N Rows );
dtF2 << Update(
With( dtSum ),
Match Columns( :Current = :Current )
);
Close( dtSum, nosave );
dtF2 << New Column( "Top10%",
character,
formula( If( :Res >= :Quantiles90, "Top10" ) )
);