回复:使用 Jmp Dashboards 篩選異常值 - 如何進行?您確定括號位於應有的位置嗎?


回复:使用 Jmp Dashboards 篩選異常值 - 如何進行?@jthi , 正確的。
我更正了代碼
...並添加了不同情況下外星人列表在我的系統上的外觀的屏幕截圖。
回复:使用 Jmp Dashboards 篩選異常值 - 如何進行?根據您最終想要做什麼,您確實有一些可能的解決方法:
- 添加“空白”行:alien = 1(除了外星人為 1 之外,所有其他值均缺失)
- 使用列錶框(或其他東西)創建自定義過濾器,然後您可以擁有自己的邏輯和選項
- 如果沒有找到,請使用某種逆過濾器
- 如果沒有找到,則使用不同的視圖
- 不要隱藏數據過濾器,以使正在過濾的內容更加明顯(或者在這種情況下沒有被過濾)
回复:使用 Jmp Dashboards 篩選異常值 - 如何進行?一些見解為什麼該方法通過在哪裡()不是動態的
使用Where()過濾分析創建新的鏈接私有數據表:
生成數據表的私有子集
回复:使用 Jmp Dashboards 篩選異常值 - 如何進行?這是向用戶顯示 Jmp 中存在問題的解決方法嗎 - 我希望用戶使用 Jmp 而不會看到問題:)
關於其他解決方法:
我不喜歡它重新發明輪子(創建我自己的數據過濾器)——只是為了防止 Jmp“做錯事”。
所以剩下的就是選項#1:
將虛擬行添加到數據表中,以便數據過濾器不會因找不到任何匹配行而被清除。
有一些令人討厭的缺點:虛擬行必須在其他地方手動“刪除”......
- 列號 (if(:dummy_row, ., :alien), ...);
- 圖形生成器 (...,Where(Ismissing(:dummy_row));
- dfRows = myDataFilter << 獲取過濾行;
NRowsAfterDummyScreening=NItems(Loc(-dt[dfRows,"dummy"]+1));
只要用戶不激活它就會起作用
包括缺失的分組列 ( 1 )。
對於 Jmp 的未來版本,我希望有一個選項可以防止數據過濾器在未找到匹配項時重置。 這是願望:
本地數據過濾器:調整當前數據的選項
回复:使用 Jmp Dashboards 篩選異常值 - 如何進行?我找到了解決這個問題的方法
Include missing for grouping columns( 1 )
使用數據過濾器外星人=1和虛擬 = 0 - 另外設置計算排除的行數(1) [默認]。
那麼數據過濾器將不會注意到對於許多年齡組來說,沒有外星人 = 1 和虛擬 = 0 的行。
因為它沒有註意到,所以它不會重置選擇:)
Names Default to Here(1);
dt = Open( "$SAMPLE_DATA/Big Class.jmp" );
dt << New Column( "dummy", Nominal );
dt << New Column( "alien", Nominal );
For( myAge = 12, myAge <= 17, myAge++,
dt << add rows( {:name = "xxx", :age = myAge, :dummy = 1, :alien = 1} )
);
:alien[12]=1;
:sex[12]="";
:alien[39]=1;
New Window( "Outlier Screening",
Data Filter Context Box(
H List Box(
dt << Data Filter(
Local,
Add Filter( columns( :age ), Where( :age == 13 ), Display( :age, N Items( 6 ) ) )
),
dt << Tabulate(
Show Control Panel( 0 ),
Include missing for grouping columns( 1 ),
Add Table(Row Table( Grouping Columns( :name, :sex ) ) ),
Local Data Filter(
Close Outline( 1 ),
Mode( Show( 0 ) ),
//Count Excluded Rows( 0 ),
Add Filter( columns( :dummy, :alien ), Where( Is Missing( :dummy ) ), Where( :alien == 1 ) )
)
)
)
)
);
注意:如果有一天整個數據集中沒有一個外星人,這個解決方案就會失敗。
對於這種情況...
- 人們可以在虛擬年齡組(“-99”)中隱藏一個虛擬 = 0 的額外外星人
...並註意不要有人計算全班的非虛擬外星人 - 或者:將數據過濾器分成兩部分:
然後它們都獲得足夠的匹配行,這樣它們就不會重置。
查看更多...Names Default To Here( 1 );
dt = Open( "$SAMPLE_DATA/Big Class.jmp" );
dt << New Column( "dummy", Nominal );
dt << New Column( "alien", Nominal );
For( myAge = 12, myAge <= 17, myAge++,
dt << add rows( {:name = "xxx", :age = myAge, :dummy = 1, :alien = 1} )
);
:sex[12] = "";
New Window( "Outlier Screening with worarounds",
Data Filter Context Box(
H List Box(
dt << Data Filter( Local, Add Filter( columns( :age ), Where( :age == 13 ), Display( :age, N Items( 6 ) ) ) ),
Data Filter Context Box(
H List Box(
dt << Data Filter( Local, Add Filter( columns( :dummy ), Where( Is Missing( :dummy ) ), Display( :age, N Items( 6 ) ) ) ),
dt << Tabulate(
Show Control Panel( 0 ),
Include missing for grouping columns( 1 ),
Add Table( Row Table( Grouping Columns( :name, :sex ) ) ),
Local Data Filter( Close Outline( 1 ), Mode( Show( 0 ) ), Add Filter( columns( :alien ), Where( :alien == 1 ) ) )
)
)
)
)
)
);
使用 Jmp Dashboards 篩選異常值 (:alien:) - 如何進行?我想通過列出班上的外星人來進行一些異常值篩選。
第一次嘗試:本地數據過濾器
我對大班裡的所有外星人感到非常震驚!
...但後來我注意到數據過濾器被忽略了(因為在第一天,班級中沒有外星人 - 並且沒有匹配的行,數據過濾器只是重置 - 而不是顯示 0 個匹配行!!!)。
這似乎與數據過濾器:如何指定限制:
如果某個值僅在數據過濾器中使用,但未在數據表中使用,則會從數據過濾器中刪除該值。
此行為會干擾 Jmp 的另一個行為:如果取消選擇最後一個過濾器值,全部行被選擇(而不是沒有)。
所以,隨著當前的數據過濾器的行為,這種方法不起作用:(
接下來,我使用了一個在哪裡()條款限制製表報告。
不幸的是,如果有一天類中沒有外星人,Where 子句會生成一條錯誤消息 - 而不是將數據集限制為 0 行:
This Where-clause for data table 'Big Class' resulted in no rows: :alien == 1
4例“外星人”名單:




請注意:
對於以下情況在哪裡() ,還有一個問題:
報表的行選擇是靜態的。
XX 更改為非外國人後 - 他仍然列在報告中:

Names Default To Here( 1 );
dt = Open( "$SAMPLE_DATA/Big Class.jmp" );
dt << New Column( "alien", nominal, set each value( 0 ) );
myDashboard = Function( {myTitle, withWhereClause},
New Window( myTitle,
<<SHOW menu=""> so many aliens ?!?! no, Data filter was ignored (filter is OK, see below)
myDashboard( "1) Data Filter, no alien", 0 );
// 2) Where Cause + no matching row --> error message instead of a report
myDashboard( "2) Where(), no alien", 1 );
dt << add rows( {name = "XX", alien = 1, sex = "M", age = 200} );
// 3) Data Filter + 1 alien
myDashboard( "3) Data filter, 1 alien", 0 ); // new test: --> filter OK --> works
myDashboard( "4) Where(), 1->0 aliens ...", 1 ); // Where Clause + matching row --> dashboard is created, but ...
// XX gets human -> Dashboard #4 stays the same :(
//dt[41, {"alien"}] = 0;
;</SHOW>
數據混合和清理數據探索和可視化回复:使用 Jmp Dashboards 篩選異常值 - 如何進行?
@jthi寫道:- 不要隱藏數據過濾器,以使正在過濾的內容更加明顯(或者在這種情況下沒有被過濾)
?
回复:使用 Jmp Dashboards 篩選異常值 - 如何進行?@hogi寫道:
注意:此解決方案將會失敗 *)
...結果非常令人驚訝 - 似乎頁眉和頁腳以及數據過濾器本身都不知道有關重置的任何信息:

Names Default to Here(1);
dt = Open( "$SAMPLE_DATA/Big Class.jmp" );
dt << New Column( "dummy", Nominal );
dt << New Column( "alien", Nominal );
For( myAge = 12, myAge <= 17, myAge++,
dt << add rows( {:name = "xxx", :age = myAge, :dummy = 1, :alien = 1} )
);
:sex[12]="";
New Window( "Outlier Screening",
Data Filter Context Box(
H List Box(
dt << Data Filter(
Local,
Add Filter( columns( :age ), Where( :age == 13 ), Display( :age, N Items( 6 ) ) )
),
dt << Tabulate(
Show Control Panel( 0 ),
Include missing for grouping columns( 1 ),
Add Table(Row Table( Grouping Columns( :name, :sex ) ) ),
Local Data Filter(
Close Outline( 1 ),
Mode( Show( 0 ) ),
//Count Excluded Rows( 0 ),
Add Filter( columns( :dummy, :alien ), Where( Is Missing( :dummy ) ), Where( :alien == 1 ) )
)
)
)
)
);
回复:使用 Jmp Dashboards 篩選異常值 - 如何進行?我準備此腳本用於有關 Jmp 中異常值篩選的內部討論。
它顯示了大部分方面,並且可以用作進一步開發解決方法的起點......
Names Default To Here( 1 );
dt = Open( "$SAMPLE_DATA/Big Class.jmp" );
dt << New Column( "dummy", Nominal );
dt << New Column( "alien", Nominal );
:alien[12] = 1;
:sex[12] = "";
:alien[39] = 1;
New Window( "alien screeing",
<<SHOW menu=""></SHOW>
回复:使用 Jmp Dashboards 篩選異常值 - 如何進行?謝謝@hogi - 這看起來絕對是一個錯誤,我們將在未來的版本中修復。
回复:使用 Jmp Dashboards 篩選異常值 - 如何進行?@danschikore
該視頻提示了問題所在:
儀表板以製表中的錯誤列表開始 - 數據過濾器僅限於“外星人”,但列表中有許多條目帶有外星人 = 缺失。
為了刪除錯誤的條目,用戶必須更改“內部”數據過濾器中的選擇。 (視頻的拳頭部分)。 (*)
另一方面(第二部分),關於數據過濾器上下文框中的數據過濾器 - 一旦用戶更改那裡的選擇,製表的內容就會重置,並且“內部”數據過濾器的設置將被忽略
...直到用戶通過 (*) 再次更正它
支持票:TS-00046650
回复:使用 Jmp Dashboards 篩選異常值 - 如何進行?謝謝 :)
所以,我終究還是回到了@jthi的第一個建議:
@jthi寫道:
- 添加“空白”行::alien = 1 (缺少所有其他值外國人除外 1)
只是一個帶有alien=1的空行,沒有for循環,沒有額外的虛擬列等。
然後,虛擬外星人通過附加數據過濾器條目顯示性別 = 缺失、姓名 = 缺失、年齡 = 缺失
- 這樣可以通過選擇輕鬆從報告中刪除虛擬外星人一個相應數據過濾器中的條目(!=丟失)。
- 與虛擬柱方法相比的優點:
如果“今天沒有外星人”,異常值篩選將不會重置:)
Names Default to Here(1);
dt = Open( "$SAMPLE_DATA/Big Class.jmp" );
dt << New Column( "alien", Nominal );
dt << add rows( {:alien = 1} );
addAliens=0;
if(addAliens,
:alien[12]=1;
:alien[39]=1;
);
New Window( "Outlier Screening",
Data Filter Context Box(
H List Box(
dt << Data Filter(
Local,
Add Filter( columns( :age, :sex ), Where( :age == 13 ) )
),
dt << Tabulate(
Show Control Panel( 0 ),
Include missing for grouping columns( 1 ),
Add Table(Row Table( Grouping Columns( :name, :sex ) ) ),
Local Data Filter(
Add Filter( columns( :alien ), Where( :alien == 1 ) )
)
)
)
)
);
回覆:使用 Jmp Dashboards 篩選異常值 - 如何進行?在 Jmp 17 中,為表/摘要引入了資料過濾器。
這裡的問題要嚴重得多:最後,只有錯誤的結果 - 儀表板左側沒有數據過濾器顯示“明顯”錯誤的設定。表格/摘要中有 2 個錯誤
回覆:使用 Jmp Dashboards 篩選異常值 - 如何進行?嗨@danschikore ,
@danschikore寫道:
謝謝@hogi - 這絕對看起來像一個錯誤,我們將在未來的版本中修復。
此註記是指具有兩個資料過濾器的特殊情況還是一般情況:
如果值不在目前資料表中,資料過濾器會忘記其設定?
回覆:使用 Jmp Dashboards 篩選異常值 - 如何進行?您好@hogi - 我指的是您在視頻中顯示的第一個問題,當外部過濾器更改時,製表符沒有顯示正確的子集。但我在這裡沒有看到您提供的腳本 - 您是透過技術支援發送的嗎?
-和
回覆:使用 Jmp Dashboards 篩選異常值 - 如何進行?影片基於之前2篇貼文的程式碼,也有同樣的問題。
在 Jmp18 中看起來好多了。看來這個問題可以解決了。
另一方面,資料過濾器仍然存在「忘記」其設定的問題:
https://community.jmp.com/t5/Discussions/Can-animation-of-this-difficulty-be-achieved-with-JSL/mp/755896#M93798
回覆:如何使用 Jmp Dashboards 進行異常值篩選?在 JMP19 中修復:
Jmp 和 JSL 中的小陷阱
回覆:如何使用 Jmp Dashboards 進行異常值篩選?請觀看
使用 JMP 和 JMP Pro 的最新增強功能@ 9 分鐘 / 作者: @brady_brady
觀看現場演示,了解強制值如何解決資料過濾器的問題。
現在如此流暢優雅:)