列函数和行状态根据 JMP 版本 15 的发行说明:
Col 函数通过 Excluded(Row State()) 函数支持排除的行。
列最大值(:高度,:性别,排除(行状态()));
然而,这个语法似乎不起作用。谁能建议正确的语法?
数据混合和清理实验设计回复:列函数和行状态我认为这与分箱背后的概念相同。 您将每个观察值的一个值映射到另一个值,在本例中为一组值。 它可能是一个垃圾箱。 它可能是集中趋势的衡量标准。
回复:列函数和行状态好,谢谢。我无法真正理解为表的每一行生成列统计信息的想法,但我想一定有用例。我将坚持使用用户定义的函数来计算列统计信息,同时考虑行排除。
回复:列函数和行状态根据文档,当指定 By 变量时,应在列公式或 For Each Row() 中使用该函数:
(可选)A 按变量进行计算统计跨行组。 在 a 中使用 By 变量坳umn 公式或对于每一行()功能。
在回顾本文前面的一些示例时,我同意它似乎将排除的值视为自己的按级别。
回复:列函数和行状态看起来它与列公式一起使用,其中 Row() 函数在计算时定义。
回复:列函数和行状态在一台计算机上它可以工作:

另一方面它失败了:

回复:列函数和行状态与大班合作(当然):
colmaximum(:height,excluded(rowstate()))
这是有效的。但在一台计算机上而不是另一台计算机上。两者都运行 15.1.0。
现在我完全困惑了!
下一篇文章的截图...
回复:列函数和行状态有趣的。 JMP 16 的预发布版本似乎适用于 r=1 和 r=2,但此后就不行了:
NamesDefaultToHere(1);
dt = Open("$SAMPLE_DATA/Big Class.jmp");
mw = J(NRow(dt), 2, .);
for(r=1, r<=NRow(dt), r++,
Row() = r;
RowState(Row()) = ExcludedState(1);
mw[r,1] = ColMean(:weight, Excluded(RowState(Row())));
mw[r,2] = ColMean(:weight, Excluded());
RowState(Row()) = ExcludedState(0);
);
AsTable(mw);
dt << Distribution(
Continuous Distribution(
Column( :weight ),
Quantiles( 0 ),
Histogram( 0 ),
Outlier Box Plot( 0 )
),
Local Data Filter(
Add Filter(
columns( Transform Column( "Row", Nominal, Formula( Row() ) ) ),
Where( Transform Column( "Row", Nominal, Formula( Row() ) ) == 1 ),
Display(
Transform Column( "Row", Nominal, Formula( Row() ) ),
N Items( 15 ),
Find( Set Text( "" ) )
)
)
)
);回复:列函数和行状态戴夫,
很混乱。 我想这个问题应该问我们的朋友温迪。回复:列函数和行状态我可以编写一个解决方案 - 我的问题具体是关于版本 15 是否允许仅使用列函数来完成 - 这是我从发行说明中得到的印象。
回复:列函数和行状态也许尊重意味着在这种情况下排除的只是列统计公式中的附加 byVar ?
如果您想要不排除值的列的最大值,您可以使用 Summarize 而不是 Col Maximum 吗? 它似乎忽略了排除的行。
Names Default To Here(1);
dt =New Table("ExcludeColMax",
Add Rows(6),
Compress File When Saved(1),
New Column("A",
Numeric,
"Continuous",
Format("Best", 12),
Set Values([1, 10, 100, 2, 20, 200]),
Set Display Width(46)
),
New Column("B",
Character,
"Nominal",
Set Values({"A", "A", "A", "B", "B", "B"})
),
New Column("C",
Numeric,
"Continuous",
Format("Best", 12),
Formula(Col Maximum(:A, :B, Excluded())),
Set Display Width(65)
),
Set Row States([0, 0, 6, 6, 0, 6])
);
Write("Looping col max:");
For Each Row(
Show(Col Maximum(:A, :B, Excluded()))
);
Write("\!N\!NOnly col max:");
Show(Col Maximum(:A, :B, Excluded()));
Write("\!N\!NSummarize:");
Summarize(dt, exg = By(:B), exm = Max(:A));
Show(Eval List({exg, exm}));
Show(Max(exm));回复:列函数和行状态我用 v15.2 测试过,问题是一样的。请注意,用例是在脚本中使用该函数,而不是在列公式中使用该函数(不确定为什么我想要在一行中使用列统计信息)。
回复:列函数和行状态如果其他人出现,我将在这里添加这个非常简单的示例:

Names Default To Here(1);
New Table("ExcludeColMax",
Add Rows(6),
Compress File When Saved(1),
New Column("A",
Numeric,
"Continuous",
Format("Best", 12),
Set Values([1, 10, 100, 2, 20, 200]),
Set Display Width(46)
),
New Column("B",
Character,
"Nominal",
Set Values({"A", "A", "A", "B", "B", "B"})
),
New Column("C",
Numeric,
"Continuous",
Format("Best", 12),
Formula(Col Maximum(:A, :B, Excluded())),
Set Display Width(65)
),
Set Row States([0, 0, 6, 6, 6, 0])
);回复:列函数和行状态谢谢你让我知道。这不适用于 15.1 - 我将尝试与 15.2 进行比较。
回复:列函数和行状态我很快进行了测试,似乎仅使用 Excluded() 似乎有效(我正在使用 15.2.1)。
回复:列函数和行状态添加到此讨论中,我认为 Col 函数的行为很奇怪,并且与 JMP 中的典型行为不同,因此是意外且令人困惑的。
Col 函数忽略行的排除和过滤(本地和全局)。
这意味着 col 函数会忽略分析输出中的局部过滤,并且不可能通过过滤或按子组获取结果,或者实际上获得的结果不正确。
使用公式排除某些行的能力仍然非常有限。
我认为这是 JMP 的一个问题,因为这可能会混淆或误导用户。 我希望 JMP 团队能够解决这个问题,使 Col 功能与其他功能保持一致。
回复:列函数和行状态@奥伦_巴里兰,
要从一万英尺的角度考虑您对 Col 函数不遵循 JMP 平台的排除功能的担忧,必须包含比 Col 函数更多的函数。一个简单的 SQRT() 函数或 SUM() 也应该包含在您的参数中,因为如果对排除行上的值进行处理,它们也应该返回空值。如果是这种情况,您如何处理不希望忽略行的情况?
因此,从我的角度来看,JMP 采用了更实用的方法,允许程序员以各种方式获得他们需要的东西。
Col Mean( :weight );
计算数据表中所有行的平均值,同时
Col Mean( If( Excluded( Row State( Row() ) ), ., :weight ) )
仅计算非排除行的平均值
回复:列函数和行状态我同意吉姆的观点。
还有第三个选项,您可以将排除作为它自己的“组”进行处理(不确定实际上是如何处理的)
Col Mean(:weight, Excluded())

我对 Col 函数的唯一“问题”是,由于它们处理排除行的方式,它们可能很危险,而且您可以从右键单击菜单轻松创建它们。 如果 JMP 确实将 Excluded() 自动包含到这些公式中(或将其设为首选项),也许可以降低这种风险?