JMP脚本中的循环问题您好,我有两个问题-
问题1-
我有一个简单的数据(附加)和一个脚本,可以正常工作,但是只要我想将其转换为for循环即可。没有得到正确的东西。
目的-我想要每个电流的top10%电阻值。我的数据不是对称的,这意味着每个电流的数据点数是不同的。
在同一数据中,只有7个当前值,在实际数据中,它可能需要100多个值。
方法-我正在生成一个分位数表,然后将我的电阻值与90%的分位数进行比较,并添加一个额外的列“ Top10%”。对于具有7个当前值的样本数据,一切都工作正常,但是我需要一个循环。超级用户能否指出我在for循环中犯的错误,这将有助于学习如何实现for循环。
有什么帮助吗?
Ques2-获取前95%数据的最佳方法是什么?
这里有什么帮助吗?
脚本编写回复:问题在JMP脚本循环我相信以下脚本是获得所需结果的简单方法

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" ) )
);
回复:问题在JMP脚本循环是的,很好。更好,更简单的方法。我不知道我们也可以从汇总表中得到分位数。我正在按照您描述的方式实施它。
除了分位数和前10%的数据外,还有什么评论我的“ for循环”出了什么问题?
谢谢您的帮助。
回复:问题在JMP脚本循环关于您的For()循环逻辑
- 一列只能有1个公式。 在For()循环中包含公式定义将为每个循环指定不同的公式。 我不确切知道JMP会做什么,充其量是,它会在创建新公式时替换每个公式,最后只创建最后一个公式。
- 通过在每个If中设置“ Fail”值,逻辑上唯一准确的时间就是Last Level是当前行的级别。 否则,假设级别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;
)
);