大家好,
我有这个数据表(已附上),我正在尝试使用 jsl 脚本进行分析。 我没有走多远... 我知道“Col Moving Average”功能,但无法满足我的需求。 我会 appericaite 你的意见!
脚本应该
1.按“组”列对“分钟”列进行排序
2. 按“组”计算“阅读”的滚动斜率。
输出应该是两个添加的列:
1. 滚动斜率,但仅适用于在它们之前有足够多的行来计算滚动斜率的行。 例如,如果窗口大小设置为 5,则滚动坡度应仅从第 5 行开始。
2.滚动窗口的两个边缘时间点之间的距离除以2。 比如当前窗口的第一个和最后一个时间点分别是3和8,那么这个值就应该是2.5。
谢谢!!
如果我理解你所说的滚动坡度的意思,这里有一个脚本来做你正在寻找的东西以及如何制作脚本背后的秘密。
脚本:
dt = Data Table( "Input data" ) << Sort(
By( :Group, :Minutes ),
Order( Ascending, Ascending ),
Output Table( "Sorted Input Data.jmp" )
);
dt << New Table Variable ("window", 5);
dt << new column ("Rolling Slope", numeric, set formula (If( Row() > window,
(:Reading + Lag( :Reading )) / 2,
.
)));
秘密(如果你已经知道可以跳过这个:) :
如果您知道如何在 JMP 的 GUI 中做事,就不需要大量的脚本知识来创建脚本来做事,因为您可以大多只需从日志中复制/粘贴。 此脚本的三个示例:
1、分拣。 我首先使用 Tables...Sort 命令对数据表进行了排序,然后我查看了保存到新数据表的“Source”脚本,并将其复制/粘贴到一个新的脚本窗口中(我确实添加了一个“dt =”在开头和结尾有一个分号,所以你必须有一点点脚本知识)。

2.我使用GUI添加了一个新的表变量(表上的红色三角形,新表变量),然后我查看日志并厚颜无耻地复制脚本,并将其粘贴到我的脚本窗口中。 我用对“dt”的引用替换了第一部分。

3. 我输入了“dt << new column ("Rolling Slope", numeric, set formula (xxx));",然后我在 GUI 中创建了公式,并复制/粘贴它以替换代码。

话虽如此,这是一个链接学习脚本的优秀免费课程。