Come utilizzare una colonna per "Ordine valore" un'altra colonnaCara comunità JMP,
È possibile utilizzare i valori numerici (interi) di una colonna come modo per "ordinare i valori" di un'altra colonna?
Ho una colonna di testo che vorrei ordinare in base a un'altra colonna che contiene numeri interi. Ad esempio, ho una colonna chiamata :Text e una chiamata :Level.

Per impostazione predefinita, JMP ordina la proprietà della colonna "Ordine valore" in questo modo:

Preferirei ordinarlo così:

Che, nel mio semplice esempio, è lo stesso ordine della colonna :Level. Ovviamente posso farlo manualmente, ma nella mia tabella di dati reali ho una colonna di testo con diverse dozzine di voci che preferirei non eseguire manualmente, ma utilizzare invece la colonna :Level per impostare la proprietà "Ordine valori" della colonna :Text.
C'è un modo per eseguire lo script o farlo tramite una GUI all'interno di JMP?
Grazie!,
DS
Modellazione statistica avanzataAutomazione e scriptingPersonalizzazione di massaRi: Come utilizzare una colonna per "Ordine valore" un'altra colonnaLa soluzione qui sta utilizzando l'array associativo che richiede di avere chiavi univoche. Quindi, se hai livelli duplicati, parte del testo che hai verrà "eliminato" (e saranno ordinati per impostazione predefinita, immagino).
Ri: Come utilizzare una colonna per "Ordine valore" un'altra colonnaCIAO !
Sto cercando di ordinare una colonna (lotti) in base ai valori di una colonna di data numerica, ma riscontro un problema per cui due lotti diversi sono stati prodotti nello stesso giorno.
Ad esempio, perché questo non dovrebbe essere ordinato correttamente?
dt = New Table("table",
Add Rows(10),
Compress File When Saved(1),
New Column("Text",
Character,
"Nominal",
Set Values({"A", "B", "C", "D", "E", "F", "AA", "BB", "CC", "DD", "EE", "FF"})
),
New Column("Level",
Numeric,
"Continuous",
Format("Best", 12),
Set Values([1, 2, 2, 3, 3, 4, 5, 6, 7, 8, 9, 10])
)
);
L'ordine della colonna di testo sarebbe il seguente:
testo livello
UN 1
B2
D3
F4
AA5
BB6
CC7
DD 8
EE 9
FF 10
C2
E3
Invece del desiderato:
testo livello
UN 1
B2
C2
D3
E3
F4
AA5
BB6
CC7
DD 8
EE 9
FF 10
C2
Ri: Come utilizzare una colonna per "Ordine valore" un'altra colonnaSono d'accordo, @jthi la soluzione è la migliore.Ad alcune persone non piace JSL.Molte persone non sono a conoscenza dei livelli di ordine delle righe.Gli utenti di Excel (è in arrivo un commento di generalizzazione) vorrebbero avere i livelli di ordine delle righe come impostazione predefinita.Pertanto, questa è la mia motivazione per rispondere alla tua bella domanda di discussione.
Ri: Come utilizzare una colonna per "Ordine valore" un'altra colonnaCiao, sì, ora capisco perché devi deselezionare la casella di controllo dell'ordine personalizzato. Ciò ha senso. La cosa bella del modo in cui jthi lo fa è che, indipendentemente dall'ordinamento della tabella dati, mantiene l'ordinamento dei valori desiderato della colonna :Text.Ri: Come utilizzare una colonna per "Ordine valore" un'altra colonnaHo fatto un errore nella descrizione di cosa fare.Ecco un esempio che utilizza la tabella dati Big Class
- Ho ordinato la tabella dati per Altezza

- Quindi sono entrato nella proprietà della colonna per la colonna Nome e ho selezionato Livelli ordine riga e ho deselezionato Ordine personalizzato

- Ho quindi aperto il Costruttore di grafici e ho trascinato la colonna dei nomi sull'asse X e, come si può vedere, l'ordine dell'asse X è l'ordine delle righe dei nomi

Ri: Come utilizzare una colonna per "Ordine valore" un'altra colonnaCIAO @jthi ,
Grazie per il tuo feedback Sì, questo codice JSL è esattamente ciò di cui ho bisogno in quanto può gestire qualsiasi disposizione strana delle colonne :Text e :Level e quindi assegnare l'ordinamento dei valori in modo appropriato.
Non ho esplorato o lavorato molto con il comando array associativo, ma chiaramente ho bisogno di approfondirlo! Molto bello, solo 3 righe di codice.
Grazie!,
DS
Ri: Come utilizzare una colonna per "Ordine valore" un'altra colonnaCIAO @txnelson ,
Grazie per il tuo feedback Sfortunatamente questa soluzione non funziona con la colonna :Text. Se ordino la tabella in base alla colonna :Level e quindi applico i "Livelli di ordine delle righe" come suggerisci per l'ordine dei valori della colonna :Text, mantiene comunque l'ordine alfa della colonna :Text, il che significa che AA viene ancora dopo A e così via.
L'altro "problema" è che confonde le righe della tabella dati originale, che sono attualmente ordinate per data. Le colonne :Text e :Level possono essere sparse nelle date e talvolta mantenere la tabella ordinata per data aiuta. Non è davvero un grosso problema, ma so che agli altri utenti che accederebbero alla tabella dati non piacerà.
Grazie!,
DS
Ri: Come utilizzare una colonna per "Ordine valore" un'altra colonnaCIAO @ron_horne ,
Grazie per il tuo feedback Conosco questo metodo per creare un grafico di tipo Pareto nel Costruttore di grafici; l'ho usato molte volte ed è abbastanza utile. Sfortunatamente, sto facendo molte altre valutazioni con la tabella dati oltre alla semplice visualizzazione dei dati, quindi sarebbe utile avere una soluzione portabile e scalabile su tabelle con migliaia di righe e diverse dozzine di opzioni di testo. Non ho ancora provato gli altri due metodi, ma ci proverò.
Grazie!,
DS
Ri: Come utilizzare una colonna per "Ordine valore" un'altra colonnaEntrambi @jthi E @ron_horne fornire belle soluzioni.Ma se vuoi solo un modo interattivo per farlo, tutto ciò che devi fare è
- ordinare la tabella dati in base alla colonna in base alla quale si desidera ordinare i dati
- Vai alla proprietà della colonna di ordinamento dei valori per la colonna che desideri utilizzare per l'ordinamento e seleziona "Livelli di ordine delle righe".

Ora, quando usi la colonna che hai specificato Livelli ordine riga come colonna di ordinamento, utilizzerà l'ordine nella tabella dati per quella colonna come ordine in cui visualizzare i risultati.
Ri: Come utilizzare una colonna per "Ordine valore" un'altra colonnaCIAO @SDF1
Se tutto ciò di cui hai bisogno è utilizzarlo nel generatore di grafici, puoi ordinare qualsiasi asse in base all'altro come nell'immagine. puoi anche modificare la statistica per la classifica. questo non ti aiuterà se desideri l'ordinazione per test o utilizzo in altre piattaforme di analisi o grafica.

quello che faccio nella maggior parte dei casi è produrre un riepilogo della tabella in base all'altra variabile e ordinarlo. da lì copio e incollo le categorie direttamente nell'ordinamento dei valori. È un trucchetto che non tutti conoscono ma funziona.
Ron
Ri: Come utilizzare una colonna per "Ordine valore" un'altra colonnaNon so se è possibile con la GUI ma puoi scriverlo con un paio di passaggi:
- Per prima cosa ordina correttamente la colonna di testo nell'elenco
- Aggiungi la proprietà della colonna alla colonna Testo con l'elenco precedente
Di seguito è riportata una possibile soluzione che dovrebbe funzionare almeno con l'esempio corrente (apri la finestra Log per vedere le stampe "debug"):
Names Default To Here(1);
dt = New Table("table",
Add Rows(10),
Compress File When Saved(1),
New Column("Text",
Character,
"Nominal",
Set Values({"A", "B", "C", "D", "E", "F", "AA", "BB", "CC", "DD"})
),
New Column("Level",
Numeric,
"Continuous",
Format("Best", 12),
Set Values([1, 2, 3, 4, 5, 6, 7, 8, 9, 10])
)
);
//get values from Level and Text into Associative Array
aA_level_text = AssociativeArray(Column(dt, "Level") << Get Values,Column(dt, "Text") << Get Values);
show(aA_level_text); //debug
ordered_level = aA_level_text << Get Values; //Get values (will be ordered by Level)
Show(ordered_level); //debug
Show(Column(dt, "Text") << Get Property("Value Ordering")); //debug
//Add Value Ordering Column Property to Text column
Eval(Eval Expr(
Column(dt, "Text") << Set Property("Value Ordering", Expr(ordered_level));
));
Show(Column(dt, "Text") << Get Property("Value Ordering")); //debug
dt << Clear Column Selection;
Ri: Come utilizzare una colonna per "Ordine valore" un'altra colonnaOK, ci proverò
Ri: Come utilizzare una colonna per "Ordine valore" un'altra colonnaUsare Ranking() per "riordinare" potrebbe funzionare nel tuo caso
Names Default To Here(1);
dt = New Table("table",
Add Rows(10),
Compress File When Saved(1),
New Column("Text", Character, "Nominal", Set Values({"FF", "B", "C", "D", "E", "F", "AA", "BB", "CC", "DD", "EE", "A"})),
New Column("Level", Numeric, "Continuous", Format("Best", 12), Set Values([10, 2, 2, 3, 3, 4, 5, 6, 7, 8, 9, 1]))
);
m_text = Column(dt, "Text") << get values;
m_level = Column(dt, "Level") << get values;
orders = Ranking(m_level);
m_text[orders];
Show(Column(dt, "Text") << Get Property("Value Ordering")); //debug
Eval(Eval Expr(Column(dt, "Text") << Set Property("Value Ordering", Expr(m_text[orders]))));
Show(Column(dt, "Text") << Get Property("Value Ordering")); //debugRi: Come utilizzare una colonna per "Ordine valore" un'altra colonnaHa funzionato! Grazie mille, Jthi!
Re: Come usare una colonna per "ordinare in base al valore" un'altra colonnaInteressante che la colonna ordinale "età" non possa essere selezionata nel menu a comparsa. Qualcuno sa perché?
Oggetto: Come utilizzare una colonna per "ordinare i valori" di un'altra colonnaArticoli simili con soluzioni eleganti:
Impostazione dell'ordine dei valori o dell'etichetta del valore tramite un'altra colonna mediante un array associativo
Italiano: https://community.jmp.com/t5/Discussions/how-to-sort-x-axis-by-another-column-value/mp/442639#M69092 :
Indice di riepilogo + classificazione
Re: Come usare una colonna per "ordinare in base al valore" un'altra colonnaNelle versioni successive di JMP è possibile farlo, poiché offrono l'opzione "Altro" che consente di selezionare una colonna.