JMP17 中的字母數字排序規則我正在使用 JMP17.0.0 中的排序功能,但得到了意外的結果。我希望排序的列包含序號列表,其中每個序號都是字母和數字字元的混合(範例:G95VXWW8CID5、G921J8D2CIE3、G943H085CIB2)。排序 -> 升序操作將 G95... 置於 G92... 之前,而 G92... 則置於 G94 之前...這是出乎意料的,因為雖然所有三個序號中的前兩個字元都是相同的,但 G9 在第三個位置,2 應該在 4 之前,而 4 應該在 5 之前。JMP 對字母數字值進行排序的規則是什麼?這些規則是否可以編輯?
資料混合與清理分享和交流成果視窗回覆:JMP17 中的字母數字排序規則您的首選項設定為數字排序。
去
文件=>首選項=>表格
並取消選取數字排序的複選框

回覆:JMP17 中的字母數字排序規則我不得不恭敬地不同意 JMP 的排序選擇。據我所知,沒有其他軟體可以這樣做,而且它一點也不明顯。
如果資料類型指定為字符,則應將其視為字符並按可接受的規則排序。 也許 JMP 需要一個新的類別 Char/Num。
我下面的資料集按 JMP 排序為
0CNFB
0ERRB
01JAB
013BB
2X0UB
11DBB
13ZYB
17TSB
156QB
1474B
我理解此處解釋的規則,但誰會認為這些應該如何排序?這不是對字元欄位進行排序的方法。
回覆:JMP17 中的字母數字排序規則同意@Victor_G @jthi關於反映自然排序順序的排序規則...您可以看到 Excel 和 JMP 對這些進行不同的排序。 但我覺得我們花了很長時間試圖處理 Excel,卻沒有理解下面的範例中 11 大於 2,以至於我們忘記了這是不正常的。 就您而言,您有 943、921 和 95。潛在的問題是您的編碼系統是否希望 95 是最高的? 那我同意@Victor_G關於利用輔助列。
按字母順序排序:
- z11
- z2
自然排序:
- z2
- z11
回覆:JMP17 中的字母數字排序規則感謝大家!設定“值順序”屬性,然後排序,將值按照我預期的順序放置。
回覆:JMP17 中的字母數字排序規則此外,如果您在列中新增「值順序」屬性,JMP 應立即識別您的資料是字母數字,並詢問您是否要使用簡單排序對其進行配置。 如果您回答“是”,則在以下對話方塊中按“確定”(即,不要調整任何內容,只需接受),然後排序將按您的預期進行。



回覆:JMP17 中的字母數字排序規則我不確定在不使用列屬性的情況下是否可以影響排序的方式。 您可以建立「支援」列,然後可以對其進行排序以獲得所需的順序,或者您可以使用查詢產生器


或使用值順序列屬性

</CODE></P>
<P><CODE class=" language-jsl">
使用函數進行排序時存在一些差異:</CODE></P>
<PRE><CODE class=" language-jsl">Names Default To Here(1);
dt = New Table("Untitled",
Add Rows(3),
New Column("Column 1",
Character,
"Nominal",
Set Values({"G95VXWW8CID5", "G921J8D2CIE3", "G943H085CIB2"})
)
);
a = dt[0, 1];
show(a);
b = Associative Array(Column(dt, 1));
Show(Sort List(a));
Show(b << get keys);
Show(Ranking(a));
dt << Sort(By(:Column 1), Replace Table, Order(Ascending));
Show(dt[0, 1]);
Write();</CODE></PRE>
<PRE><CODE class=" language-jsl">a = {"G95VXWW8CID5", "G921J8D2CIE3", "G943H085CIB2"};
Sort List(a) = {"G921J8D2CIE3", "G943H085CIB2", "G95VXWW8CID5"};
b << get keys = {"G921J8D2CIE3", "G943H085CIB2", "G95VXWW8CID5"};
Ranking(a) = [3, 1, 2];
dt[0,1] = {"G95VXWW8CID5", "G921J8D2CIE3", "G943H085CIB2"};
JMP表排序似乎正在使用自然排序(維基百科)喜歡@Victor_G提到的而不是按字母順序排序
回覆:JMP17 中的字母數字排序規則你好@EdHutchins99 ,
歡迎來到社區!
我嘗試用您提到的三個 ID 重現您的問題。
我認為 JMP 的行為是正常且符合預期的,因為它會嘗試使用遇到的第一個字母數字字元進行排序。
由於第一個字元全部為 G(無法根據字母表排序),因此 JMP 將對緊接在後的數字進行排序。 因此,當嘗試排序時,由於您沒有相同數量的數字字元且 95 < 921 < 943,JMP 將顯示此 G95..., G92... 和 G94... 順序。
如果您透過重新編碼 ID 列以僅保留前三個字母數字字元來建立新列,然後對此新列進行排序,您應該會得到您期望的結果。
如果您的原始列名為 ID,則這是您可以在新列中使用的公式腳本(否則您必須按此公式中的列名稱變更 ID):
Recode( :ID, {Word( [1 3], _rcNow, "", Unmatched( _rcNow ) )} )
希望對你有幫助,
回覆:JMP17 中的字母數字排序規則是否為您要排序的列設定了「值順序」列屬性?值中是否有不可列印的字元(包括空格)?
如果您可以提供範例資料表,那將非常有幫助。