Ridurre 80 valori unici a 10 valori uniciHo una colonna nella mia tabella di dati che ha oltre 80 valori di testo univoci (nominali). Vorrei prendere questi 80 valori nominali e ridurli a 10 in JSL combinando i valori che non sono tra i primi dieci (per numero di occorrenze) in un gruppo chiamato "altro". Qual è il modo più semplice per farlo in JSL? Grazie per l'aiuto!
Ri: riduzione di 80 valori univoci a 10 valori univoci@twillkickers , la risposta alla tua domanda è "sì", con JSL puoi manipolare Graph Builder o Pareto Plot per fornire la visualizzazione che stai cercando. Tuttavia, l'opzione Packed Bar in Graph Builder ti dà quasi tutto ciò che desideri (tranne l'etichetta per il totale combinato delle tue cause inferiori). La visualizzazione di questo totale richiederà alcune manipolazioni come menzionato in precedenza. Qualcosa da considerare prima di decidere se le manipolazioni aggiuntive valgono lo sforzo è che questo totale è in realtà un'informazione ridondante: l'altezza relativa della barra e l'asse y trasmettono visivamente queste informazioni.
Detto questo, se hai ancora bisogno del totale per la visualizzazione delle colonne "altre", ecco un approccio che potresti adottare (usando ancora Nicardipine.jmp come esempio):
Utilizzare lo script della piattaforma di distribuzione fornito in precedenza per creare una colonna per i livelli di causa (1-9 e 10+)
Crea una colonna formula per le tue nuove categorie, ad esempio:
If( :Level Investigator Name < 10, :Investigator Name, "Other")
Usa il Generatore di grafici per creare un grafico a barre per le nuove categorie ordinate in base alla colonna Livelli (supponendo che tu voglia la categoria "Altro" a destra, altrimenti, fai semplicemente clic con il pulsante destro del mouse sull'asse e seleziona l'ordine per conteggio per vedere dove si adatta "Altro" tra le prime 9 cause):
Graph Builder(
Size( 869, 318 ),
Show Control Panel( 0 ),
Variables(
X(
:New Investigator Name,
Order By(
:Level Investigator Name,
Ascending,
Order Statistic( "Sum" )
)
)
),
Elements( Bar( X, Legend( 3 ), Label( "Label by Value" ) ) )
);
Tutte queste azioni possono essere incollate insieme per creare uno script. Se hai bisogno di aiuto con questo, ti suggerisco di consultare la Guida-> Libri-> Guida agli script e la Guida-> Indice degli script e cercare "Nuova colonna" per ottenere la sintassi per creare una nuova colonna formula nella tabella dei dati.
Ri: riduzione di 80 valori univoci a 10 valori univoci@jerry_cooper grazie. Ho una domanda sulla trama di Pareto. JSL può prendere automaticamente qualsiasi cosa diversa dalle prime dieci cause e raggrupparle in una barra "Altro", invece di dover specificare le cause che voglio raggruppare insieme individualmente? Quando dico al generatore di grafici di raggruppare tutto tranne i primi 10 valori, il codice JSL finisce per assomigliare a questo:
Pareto Plot(
Cause( :Cause ),
Show **bleep** Percent Curve( 0 ),
Combine Causes(
{"Cause1","Cause2","Cause3","Cause4","Cause5","Cause6"}
),
SendToReport(
Dispatch( {"Plots"}, "102", ScaleBox, {Max( 4512.67559361611 )} ),
Dispatch( {"Plots"}, "106", ScaleBox, {Max( 100.059325800801 )} ),
Dispatch( {"Plots"}, "Pareto Report", FrameBox, {Frame Size( 1061, 702 )} )
)
);Per la mia domanda, le cause possono cambiare di volta in volta in via prioritaria. Vorrei che JSL ricalcolasse automaticamente le prime dieci cause ogni volta che viene generato il diagramma di Pareto.
Ri: riduzione di 80 valori univoci a 10 valori univoci@twillkickers , hai ragione, il grafico Packed Bars visualizzerà solo i valori per le barre primarie. Se è necessario visualizzare i valori, l'approccio più semplice potrebbe essere quello di utilizzare l'opzione Grafico di Pareto (si noti che ho disattivato la curva percentuale cumulativa e scelto Etichette e un colore uniforme dal menu del triangolo rosso Cause):
Ri: riduzione di 80 valori univoci a 10 valori univoci@jerry_cooper , Grazie per l'aiuto! Quando si utilizza lo stile della barra "Packed", c'è un modo per etichettare la barra con le altre categorie? Le mie etichette di quantità per ogni barra vengono visualizzate solo sulle barre non imballate. Grazie per l'aiuto.
Ri: riduzione di 80 valori univoci a 10 valori univociCiao @twillkickers ,
Non sono sicuro di quale sia l'obiettivo finale della tua richiesta, ma se fosse creare un grafico in stile Pareto, puoi farlo senza creare script o creare una nuova colonna.
Se hai la versione 14, il nuovo elemento "Packed Bars" in Graph Builder farà ciò che stai descrivendo. Usando la tabella di dati Nicardipine.jmp dalla directory Sample Data, trascina la colonna Nome investigatore sul ruolo Y, quindi seleziona "Packed" come Bar Style, digita 9 in Packed Primaries e, infine, seleziona "Separate Stack" da il menu a discesa Posizionamento imballato:

Un'altra opzione, in particolare per le versioni precedenti alla v14, è possibile selezionare Pareto Plot dal menu Quality and Process. Dal menu del triangolo rosso nella trama, selezionare la voce di menu Cause=>Combina cause, scegliere il pulsante di opzione "Ultime cause" e immettere 71 nella casella del numero:

Se vuoi davvero che uno script crei una nuova colonna con i livelli 1-10, quanto segue (usando la piattaforma di distribuzione) è un modo. Sostituisci semplicemente la tabella di dati e i nomi delle colonne dove appropriato:
Names Default to Here( 1 );
dt = Open("$Sample_Data/Nicardipine.jmp");
dist = Distribution( Nominal Distribution( Column( :Investigator Name ) ) );
dist << Order By( Count Descending );
dist << Save( Level Numbers );
dist << Close Window;
therows = dt << Get Rows Where( :Level Investigator Name >= 10 );
dt:Level Investigator Name[ therows ] = 10;
Spero che sia di aiuto.
Ri: riduzione di 80 valori univoci a 10 valori univoci@twillkickers ,
Ci sono molti modi per fare quello che vuoi. Come Tabulate, Distribuzione o Riepilogo. Ti mostrerò come implementare utilizzando l'approccio di riepilogo
// Open Sample Data Table
dt = Open( "$SAMPLE_DATA/Big Class.jmp" );
// Get frequency
dt1 = dt << Summary(
Group( :name ),
Freq( "None" ),
Weight( "None" )
);
// Let us assume weight column in this data table represents the frequency in your case
dt2 = dt1 << Sort(By(:N Rows),Order(descending));
// Select only top 10
dt2 << Select Rows(Index(1,10));
// If you want to hide and exclude the remaining
dt2 << Invert Row Selection << hide and exclude ;
// OR
// If you want to delete the rows
dt2 << Delete Rows; Ri: riduzione di 80 valori univoci a 10 valori univociCome faccio a creare una colonna che elenca la frequenza dei valori di testo univoci?
Ri: riduzione di 80 valori univoci a 10 valori univoci@twillkickers ,
Hai anche una colonna che elenca la frequenza o il numero di occorrenze di ciascuno dei valori di testo univoci? Se non lo fai, il primo passo è inserire quei dati nella tua tabella di dati. Una volta disponibile, puoi ordinare la colonna in ordine decrescente e selezionare le prime 10 righe. Ecco come lo farei:
// Open Sample Data Table
dt = Open( "$SAMPLE_DATA/Big Class.jmp" );
// Let us assume weight column in this data table represents the frequency in your case
dt1 = dt << Sort(By(:weight),Order(descending));
// Select only top 10
dt1 << Select Rows(Index(1,10));
// If you want to hide and exclude the remaining
dt1 << Invert Row Selection << hide and exclude ;
// OR
// If you want to delete the rows
dt1 << Delete Rows;