列函數和行狀態根據 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() 自動包含到這些公式中(或將其設為首選項),也許可以降低這種風險?