如何使用 JSL 将值放入数据表单元格中<meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />我对 JSL 比较陌生,但我一直在编写几个脚本来处理生成表格和图表的过程,以测试我们正在生产的软件产品是否正确报告结果。 我现在遇到的问题之一是我必须创建一个图表,显示报告的时间(简单),但也反映从报告时间箱到未来时间箱的残差。
例如,我需要制作一个等待时间图表,其中 x 轴从午夜运行到午夜,并具有离散的 15 分钟时间段。 我有一个报告等待时间的数据集,并对等待开始的时间进行分类。 为简单起见,我挑出了一行,其中报告了在上午 9:05 进入某个位置的客服人员的等待时间为 90 分钟。 该等待时间的时间段为上午 9:00,报告 90 分钟等待时间并显示在上午 9:00 时间段的图表中。 在传统图表中,所有其他时间都为零,因为排除了所有其他数据,但实际上,该图表应显示该代理在多个时间段内的等待时间,直到等待时间为零;实际上,如果下一个进入该位置的人到达当前代理仍在排队的任何时间段内等待的代理后面的位置,那么他们可以预期等待的最短时间是多少。
因此,我需要创建一个所有时间的矩阵,时间仓中的值为零,除了下面列出的那些。
时间仓等待时间
上午 9:00 90 分钟
上午 9:15 80 分钟
上午 9:30 65 分钟
上午 9:45 50 分钟
上午 10:00 35 分钟
上午 10:15 20 分钟
上午 10:30 5 分钟
我已经有一个脚本,可以为数据表最后一列之后的每个时间箱生成列,并且我发现由于涉及的条件数量以及非零等待时间发生的位置、时间和频率这一事实如果可行的话,使用列公式的矩阵的任何给定行都会过于复杂。 因此,我希望有某种方法可以填充各个单元格,以便我使用嵌套循环来遍历矩阵中每列的每一行,并确定应在其中放置什么等待时间值。
我更喜欢的另一个选择是创建一个新的数据表,其中包含子记录来处理溢出数据。 例如,数据表的子集是以下四行:
| 代理 ID | 地点 | 天 | 入场时间 | 退出时间 | 最短运输时间 | 等待时间 | 时间仓 |
|---|
184 | 出口队列 | 1 | 上午 7:10:24 | 上午 7:10:24 | 0 | 0 | 7:00 AM |
| 185 | 国际滑雪联合会入口 | 1 | 上午 6:41:38 | 上午 6:41:38 | 0 | 0 | 上午 6:30 |
| 185 | 访客队列 | 1 | 上午 6:41:38 | 上午 7:00:51 | 0 | 第1153章 | 上午 6:30 |
| 185 | 行李领取处 | 1 | 上午 7:01:59 | 上午 7:01:59 | 0 | 0 | 7:00 AM |
该脚本将扫描原始表中的每一行并将其复制到新数据表中。 在上例的第三行中,总等待时间 1153 秒大于在 6:30 AM 时间 bin 中等待所花费的时间: 6:45 AM 时间 bin - 6:41:38 AM 队列条目时间 - 0 秒队列传输时间 = 上午 6:30 时间段中使用的 202 秒等待时间。 因此,新数据表将添加子行,导致上面显示的数据表区域如下所示:
| 代理 ID | 地点 | 天 | 入场时间 | 退出时间 | 最短运输时间 | 等待时间 | 时间仓 |
|---|
| 184 | 出口队列 | 1 | 上午 7:10:24 | 上午 7:10:24 | 0 | 0 | 7:00 AM |
| 185 | 国际滑雪联合会入口 | 1 | 上午 6:41:38 | 上午 6:41:38 | 0 | 0 | 上午 6:30 |
| 185 | 访客队列 | 1 | 上午 6:41:38 | 上午 7:00:51 | 0 | 第1153章 | 上午 6:30 |
| 185 | 访客队列 | 1 | 上午 6:41:38 | 上午 7:00:51 | 0 | 第951章 | 上午 6:45 |
| 185 | 访客队列 | 1 | 上午 6:41:38 | 上午 7:00:51 | 0 | 51 | 7:00 AM |
| 185 | 行李领取处 | 1 | 上午 7:01:59 | 上午 7:01:59 | 0 | 0 | 7:00 AM |
斜体行是访客队列中客服人员 185 的子行,显示客服人员 185 在访客队列中不再等待之前的剩余等待时间。 然后,我可以使用此表生成我需要的图表,因为子记录将提供所需的附加数据。
如果有人可以为这两种解决方案提供一种方法,我们将不胜感激。
回复:如何使用 JSL 将值放入数据表单元格中谢谢罗恩。
很高兴知道。 这些行似乎是无关紧要的,但由于 JSL 是一种脚本语言,而且我刚刚开始编写自己的脚本 — 实际上我已经使用 JMP 的脚本功能几年了,但它主要是将脚本从平台保存到数据表并在需要时进行一些调整 - 我不确定它是否或与添加行有关。 起初,我疯狂地猜测这可能与预填充行有关,我意识到添加行正在以一种未记录的方式执行此操作。
说到这里,根据 JMP 脚本指南,添加行(数字)添加指定的数字行,但内部循环根据事件持续时间一次添加一个新行,并复制源行中的列值,包含在罗维,进入新行。 感谢您发现了这种未记录的功能。 这是我陷入困境的原因之一,因为我有丰富的编程经验,只要语法有很好的文档记录,通常就能找出一种新语言。 我在 JMP 文档中没有发现任何内容提到“添加行”函数可以接受包含特定行的列值列表的变量作为参数。
回复:如何使用 JSL 将值放入数据表单元格中嗨,医学博士,
我很高兴我的脚本对你有用。当我写它时,加载项不可用。
关于 z;我现在刚刚查了一下,没有必要。如果没有它,循环应该可以正常工作。 我曾经认为你必须在 for 循环中有 z 才能计算它经历的次数。
在测试脚本时,它通过始终可用的循环数来帮助我控制其操作。
最好的,
罗恩.
回复:如何使用 JSL 将值放入数据表单元格中问题。
在根据事件持续时间创建新行的代码块中,
为了(我= 1 ,我<=第N行,我++,
罗维= dt <<获得行(我) ;
为了( z = 1 , z <= ( :姓名( 「活动持续时间」 )[我] - 1 ) , z ++,
z ;
dt <<添加行(罗维) ;
dt <<运行公式;
) ;
) ;
那条线是什么z ;做?
回复:如何使用 JSL 将值放入数据表单元格中罗恩,
谢谢(你的)信息。 该插件对我不起作用,但检查气泡图问题的代码解决了我遇到的问题。 我花了一整天的时间来构建我需要的脚本,但是您提供的用于添加子行以填补数据空白的代码帮助我完成了在相当长一段时间内将陷入僵局的任务。
回复:如何使用 JSL 将值放入数据表单元格中嗨,医学博士,
我不确定我完全理解你的问题,但尝试这两个链接:
1)按频率扩展列插件
2)气泡图 - 不等的时间间隔