JMP 基礎 - 如何指派列值大家好,我是 JMP 新手。我有一個定義正方形座標的資料集。 X 列包含 x 方向的座標,Y 列包含 y 方向的座標。 我只想在資料表中以順時針方向命名角 B、C、D、E 和正方形 A 的中心,不想創建任何圖形/圖片
任何人都可以幫忙編寫 JSL 腳本嗎?
回覆:JMP 基礎 - 如何分配列值

您提供的新數據不符合我在創建我提供的原始腳本時所做的假設。 我假設了一個正方形,X 和 Y 座標可以透過檢查極值來定義,對於中心點,可以定義真正的中心(平均值)。 您也指出角點將按順時針順序排列(B、C、D、E)。 從上圖可以看出,情況也不再如此。 因此,我能看到的唯一解決方案是對角點的值進行硬編碼。
Names Default To Here( 1 );
dt = Current Data Table();
If(
Col Number( dt:x1 ) == 5,
dt << New Column( "Corners", Character, values( {"B", "C", "A", "D", "E"} ) ) //
, // Else
Col Number( dt:x1 ) == 6,
dt << New Column( "Corners",
Character,
values( {"B", "C", "A-Bottom", "A-Top", "D", "E"} )
)
);
回覆:JMP 基礎 - 如何分配列值謝謝你的快速反應! 我更喜歡解決方案 1,這就是我一直在尋找的。
為了更進一步,我的資料如下所示,我必須為 2 個不同的場景定義 2 個條件語句。
1.當資料在正方形中心只有1個A角時
2. 當資料中心有 2 個點時,稱它們為:A-Top 和 A-bottom(具有相同的 X 座標)
根據數據表中存在的數據,我嘗試編寫腳本來命名角點,如下所示(按順序)。
| X1 | Y1 | 角球 | Y1 | Y2 | 角球 |
| -70 | 29102 | 乙 | -25 | 26338 | 乙 |
| 第1569章 | -18 | C | 1615 | -18 | C |
| 9202 | 15299 | A | 9264 | 9272 | A 底 |
| 14784 | 30692 | D | 9264 | 18563 | 在頂上 |
| 16424 | 第1572章 | 乙 | 15585 | 27929 | D |
| | | | 17226 | 第1572章 | 乙 |
如果您可以分享該腳本,將會很有幫助。
謝謝!
回覆:JMP 基礎 - 如何分配列值我不確定您實際上在尋找什麼,但如果下表是它,則表後面的腳本將生成角名稱

Names Default To Here( 1 );
dt = Current Data Table();
dt << New Column( "Corner Name", character );
dt:Corner Name[dt << get rows where( :x == Col Min( :x ) & :y == Col Min( :y ) )] = "B";
dt:Corner Name[dt << get rows where( :x == Col Min( :x ) & :y == Col Max( :y ) )] = "C";
dt:Corner Name[dt << get rows where( :x == Col Max( :x ) & :y == Col Max( :y ) )] = "D";
dt:Corner Name[dt << get rows where( :x == Col Max( :x ) & :y == Col Min( :y ) )] = "E";
dt:Corner Name[dt << get rows where( :x == Col Mean( :x ) & :y == Col Mean( :y ) )] = "A";
// OR
dt << New Column( "Corner Name 2", character );
dt:Corner Name 2[1] = "B";
dt:Corner Name 2[2] = "C";
dt:Corner Name 2[3] = "D";
dt:Corner Name 2[4] = "E";
dt:Corner Name 2[5] = "A";
// OR
dt << New Column( "Corner Name 3", character, values({"B","C","D","E","A"}) );