回复:当使用 << 设置每个值来替换列中的值时,统计函数(例如 Col Mean)可能会在数据表的第一行出现错误这需要转到 JMP 技术支持
回复:使用 << 设置每个值来替换列中的值时,统计函数(例如 Col Mean)可能在数据表的第一行出现错误在对值打印输出添加一些额外的格式之后,Col ...聚合切换到非常慢的模式,这从这里已经知道:
如何使用带有“where”的 Col 最大公式/mp/578576/highlight/true#M78599
newCol=New Column("new");
newCol << Set Each Value(Col Mean(write("-value, row # ",row(),"\!n");:Vals, write("groupby row # ",row()," ",newCol[row()],"\!n");:A));
似乎对于每一行
-对所有行进行求值:首先是值,然后是GroupBy参数
- 然后再次评估特定行的GroupBy参数
然后收集并汇总匹配的值。
然后从下一行开始:
- 对所有行进行求值(再次):首先是值,然后是GroupBy参数
- 然后再次评估下一行的GroupBy参数
等等...
这解释了为什么执行量与行的长度成二次方关系,[比较如何使用列最大公式... ]
搞笑:附加评价和月亮不一样——不看的话就没有
也许 Jmp 的某个人可以提供更详细的观点……
慢速版本的完整打印输出:
查看更多...-value, row # 1
groupby row # 1 .
-value, row # 2
groupby row # 2 .
-value, row # 3
groupby row # 3 .
-value, row # 4
groupby row # 4 .
-value, row # 5
groupby row # 5 .
-value, row # 6
groupby row # 6 .
-value, row # 7
groupby row # 7 .
-value, row # 8
groupby row # 8 .
groupby row # 1 .
-value, row # 1
groupby row # 1 2.5
-value, row # 2
groupby row # 2 .
-value, row # 3
groupby row # 3 .
-value, row # 4
groupby row # 4 .
-value, row # 5
groupby row # 5 .
-value, row # 6
groupby row # 6 .
-value, row # 7
groupby row # 7 .
-value, row # 8
groupby row # 8 .
groupby row # 2 .
-value, row # 1
groupby row # 1 2.5
-value, row # 2
groupby row # 2 2.5
-value, row # 3
groupby row # 3 .
-value, row # 4
groupby row # 4 .
-value, row # 5
groupby row # 5 .
-value, row # 6
groupby row # 6 .
-value, row # 7
groupby row # 7 .
-value, row # 8
groupby row # 8 .
groupby row # 3 .
-value, row # 1
groupby row # 1 2.5
-value, row # 2
groupby row # 2 2.5
-value, row # 3
groupby row # 3 2.5
-value, row # 4
groupby row # 4 .
-value, row # 5
groupby row # 5 .
-value, row # 6
groupby row # 6 .
-value, row # 7
groupby row # 7 .
-value, row # 8
groupby row # 8 .
groupby row # 4 .
-value, row # 1
groupby row # 1 2.5
-value, row # 2
groupby row # 2 2.5
-value, row # 3
groupby row # 3 2.5
-value, row # 4
groupby row # 4 2.5
-value, row # 5
groupby row # 5 .
-value, row # 6
groupby row # 6 .
-value, row # 7
groupby row # 7 .
-value, row # 8
groupby row # 8 .
groupby row # 5 .
-value, row # 1
groupby row # 1 2.5
-value, row # 2
groupby row # 2 2.5
-value, row # 3
groupby row # 3 2.5
-value, row # 4
groupby row # 4 2.5
-value, row # 5
groupby row # 5 2.5
-value, row # 6
groupby row # 6 .
-value, row # 7
groupby row # 7 .
-value, row # 8
groupby row # 8 .
groupby row # 6 .
-value, row # 1
groupby row # 1 2.5
-value, row # 2
groupby row # 2 2.5
-value, row # 3
groupby row # 3 2.5
-value, row # 4
groupby row # 4 2.5
-value, row # 5
groupby row # 5 2.5
-value, row # 6
groupby row # 6 2.5
-value, row # 7
groupby row # 7 .
-value, row # 8
groupby row # 8 .
groupby row # 7 .
-value, row # 1
groupby row # 1 2.5
-value, row # 2
groupby row # 2 2.5
-value, row # 3
groupby row # 3 2.5
-value, row # 4
groupby row # 4 2.5
-value, row # 5
groupby row # 5 2.5
-value, row # 6
groupby row # 6 2.5
-value, row # 7
groupby row # 7 2.5
-value, row # 8
groupby row # 8 .
groupby row # 8 .
回复:当使用 << 设置每个值来替换列中的值时,统计函数(例如 Col Mean)可能在数据表的第一行出现错误当同时使用同一列作为计算的输入和输出时,我有点着急。
极端情况:如果校... 聚合就像 Lag() 一样逐行运行,输出就像毛毛虫沿着行移动,逐行改变聚合输出。
关于速度,这很酷上校...聚合做得更好。
关于问题的预防:添加一个备用临时行的聪明主意。 或者,可以使用临时列来存储值,对吗?
关于:为什么?
[慢版输入后编辑]
嗯...
将打印函数添加到 GroupBy 参数有助于查看发生了什么......
事实上,价值和通过...分组函数被评估两次。
首先获取要与第 1 行的 GroupBy 参数进行比较的值,然后在将结果写入第 1 行后再次获取值。
newCol=New Column("new");
newCol << Set Each Value(Col Mean(Print(row());:Vals,<BR /> write("\!n groupby row # ",row()," ",newCol[row()],"\!n");:A));
只有一个数字的一行:which价值功能被评估 ?
一条线分组行 # ... : 哪个通过...分组功能评价?
1
groupby row # 1 .
2
groupby row # 2 .
3
groupby row # 3 .
4
groupby row # 4 .
5
groupby row # 5 .
6
groupby row # 6 .
7
groupby row # 7 .
8
groupby row # 8 .
groupby row # 1 .
1
groupby row # 1 2.5
2
groupby row # 2 .
3
groupby row # 3 .
4
groupby row # 4 .
5
groupby row # 5 .
6
groupby row # 6 .
7
groupby row # 7 .
8
groupby row # 8 .
groupby row # 2 .
groupby row # 3 .
groupby row # 4 .
groupby row # 5 .
groupby row # 6 .
groupby row # 7 .
groupby row # 8 .
回复:当使用 << 设置每个值来替换列中的值时,统计函数(例如 Col Mean)可能在数据表的第一行出现错误它拥有 (TS-00036082) 并支持将其转发给 JMP 开发。 这篇文章的目的只是让这一点更加明显。
编辑:当我接受这个作为解决方案时,我将添加一个似乎可行的解决方法:将额外的行添加到数据表中作为第一行,使用 << 设置每个值来更新值,然后删除额外的空行
// workaround
dt << Add Row(1, At Start);
Column(dt, "Column 1 1") << Set Each Value(Col Mean(:Column 1 1, :A));
dt << Delete Rows(1);
JMP16.2 和 JMP17.0 的错误出现在我面前
使用 << 设置每个值来替换列中的值时,统计函数(例如 Col Mean)可能在数据表的第一行出现错误在尝试让我的解决方案发挥作用时,有没有更快的循环方式?我遇到了一个问题,我的数据的第一行看起来不正确(事实上,这个问题是整个第一组的问题)。
Names Default To Here(1);
dt = New Table("Untitled 5",
Add Rows(8),
Compress File When Saved(1),
New Column("Vals", Numeric, "Continuous", Format("Best", 12), Set Values([1, 2, 3, 4, 1, 2, 3, 4])),
New Column("Column 1", Numeric, "Continuous", Format("Best", 12), Set Values([1, 2, 3, 4, 1, 2, 3, 4])),
New Column("Column 1 1", Numeric, "Continuous", Format("Best", 12), Set Values([1, 2, 3, 4, 1, 2, 3, 4])),
New Column("Column 2", Numeric, "Continuous", Format("Best", 12), Set Values([1, 2, 3, 4, 1, 2, 3, 4])),
New Column("A", Character, "Nominal", Set Values({"A", "A", "A", "A", "B", "B", "B", "B"})),
New Column("B", Character, "Nominal", Formula(Col Mean(:Vals, :A)))
);
dt << New Column("Column 3", Numeric, Continuous, <<SET each="" value=""></SET>
<P><SPAN class="lia-inline-image-display-wrapper lia-image-align-inline" image-alt="jthi_1-1678901605470.png" style="width: 400px;"><SPAN class="lia-inline-image-display-wrapper" image-alt="jthi_1-1678901605470.png" style="width: 400px;"><SPAN class="lia-inline-image-display-wrapper" image-alt="jthi_1-1678901605470.png" style="width: 400px;"><SPAN class="lia-inline-image-display-wrapper" image-alt="jthi_1-1678901605470.png" style="width: 400px;"><SPAN class="lia-inline-image-display-wrapper" image-alt="jthi_1-1678901605470.png" style="width: 400px;"><span class="lia-inline-image-display-wrapper" image-alt="jthi_1-1678901605470.png" style="width: 400px;"><img src="https://us.v-cdn.net/6038925/uploads/images/51122iF900862836EE33DB/jthi_1-1678901605470.png" role="button" title="jthi_1-1678901605470.png" alt="jthi_1-1678901605470.png" /></span></SPAN></SPAN></SPAN></SPAN></SPAN></P>
<P>在我看来,Col Mean 是计算第一行的平均值,然后使用这个已经替换的值计算<STRONG>第一</STRONG>组其余行的平均值。有一种解决方法,您可以在数据表中首先添加空行 -> 使用 << 设置每个值 -> 删除第一行。</P>
<P> </P>
<P>我已经针对此问题 (TS-00036082) 开具了一张工单,JMP 支持已向开发团队提交了错误报告,但我想让这个问题更加明显。我可能需要检查一些旧脚本,确保在使用统计 col 函数时没有使用 << Set Each Value() 来替换现有值(通常在创建列时使用它)。</P><LINGO-LABS id="lingo-labs-613593" slang="en-US" mode="UPDATE"><LINGO-LABEL>质量与工艺工程</LINGO-LABEL></LINGO-LABS>回复:使用 << 设置每个值来替换列中的值时,统计函数(例如 Col Mean)可能在数据表的第一行出现错误
@hogi写道:
在对值打印输出添加一些额外的格式之后,Col ...聚合切换到非常慢的模式,这从这里已经知道:
如何使用带有“where”的 Col 最大公式/mp/578576/highlight/true#M78599
我刚刚检查了 Jmp 17.2 及更高版本(<=18.1.1)的行为。问题已解决:
dt = Open( "$SAMPLE_DATA/Big Class.jmp" );
dt << Clear Select << Select Rows( Index( 5, 40 ) ) <<DELETE rows=""></DELETE>
gives:
<SPAN class="lia-inline-image-display-wrapper lia-image-align-inline" image-alt="hogi_0-1734384257364.png" style="width: 174px;"><span class="lia-inline-image-display-wrapper" image-alt="hogi_0-1734384257364.png" style="width: 174px;"><img src="https://us.v-cdn.net/6038925/uploads/images/71281i524773A5E5A75986/hogi_0-1734384257364.png" width="174" height="408" role="button" title="hogi_0-1734384257364.png" alt="hogi_0-1734384257364.png" /></span></SPAN>
so, the value and GroupBy values are calculated for every row - then the GroupBy values are calculated again for every row.<BR />That's it.