Ciao,
Ho dati con circa 5000 righe.
Sono presenti tre colonne (Gruppo, Punteggio e Conteggio)
Valore per il gruppo: A, B
Valore per il punteggio compreso tra 0,5 e 1
Il valore per Count è 1 per ogni riga.

Vorrei riassumere i dati per gruppo A e B e raggruppare il valore del punteggio in poche categorie e quindi sommare il conteggio per ciascuna categoria di punteggio, come di seguito formato.

Sto cercando aiuto dalla comunità su come creare script JSL per eseguire questa attività?
Allego anche i dati qui.
Grazie
Userei un approccio interattivo per catturare uno script per questo. Innanzitutto, iniziamo con la tabella dei dati:

Ho lasciato Count off perché non ne avremo bisogno, ma non farà male se è lì.
Ho selezionato la colonna Punteggio, quindi sono passato a Cols, Utilities, Make Binning Formula:

E imposta Offset su 0,5 e larghezza del vassoio su 0,1:

Fare clic con il pulsante destro del mouse sulla nuova colonna (punteggio raggruppato) e copiare le proprietà della colonna:

Quindi apri una nuova finestra di script e incolla (ctrl-V), che si traduce in questo JSL:
Add Column Properties(
Value Labels(
{-0.5 = "-0.5 — -0.4", -0.4 = "-0.4 — -0.3", -0.3 = "-0.3 — -0.2", -0.2 =
"-0.2 — -0.1", -0.1 = "-0.1 — 0", 0 = "0 — 0.1", 0.1 = "0.1 — 0.2", 0.2 =
"0.2 — 0.3", 0.3 = "0.3 — 0.4", 0.4 = "0.4 — 0.5", 0.5 = "0.5 — 0.6", 0.6 =
"0.6 — 0.7", 0.7 = "0.7 — 0.8", 0.8 = "0.8 — 0.9", 0.9 = "0.9 — 1", 1 =
"1 — 1.1", 1.1 = "1.1 — 1.2", 1.2 = "1.2 — 1.3", 1.3 = "1.3 — 1.4", 1.4 =
"1.4 — 1.5", 1.5 = "1.5 — 1.6", 1.6 = "1.6 — 1.7", 1.7 = "1.7 — 1.8", 1.8 =
"1.8 — 1.9", 1.9 = "1.9 — 2"}
),
Use Value Labels( 1 ),
Formula( 0.5 + 0.1 * Floor( (:Score - 0.5) / 0.1 ) )
)Due cose qui: non ci interessano i punteggi inferiori a 0,5 (non esistono nella descrizione) o maggiori di 1, quindi possiamo cambiare un po 'le proprietà e modificare i nomi delle etichette in modo che corrispondano a ciò che desideri. Ho anche aggiunto un'istruzione If per catturare il caso limite in cui un punteggio è esattamente 1
Add Column Properties(
Value Labels(
{0.5 = "0.5 — 0.59", 0.6 = "0.6 — 0.69", 0.7 = "0.7 — 0.79", 0.8 = "0.8 — 0.89", 0.9 =
"0.9 — 1"}
),
Use Value Labels( 1 ),
Formula(
If(
(0.5 + 0.1 * Floor( (:Score - 0.5) / 0.1 )) == 1, 0.9,
0.5 + 0.1 * Floor( (:Score - 0.5) / 0.1 )
)
)
);(A proposito, quelle etichette non sono tecnicamente accurate, poiché 0,599 sarebbe etichettato come tra 0,5 e 0,59)
Possiamo racchiudere del codice attorno a questo frammento per renderlo riutilizzabile, dove usiamo la tabella dati corrente, aggiungiamo una nuova colonna chiamata Score Binned e aggiungiamo queste proprietà a quella colonna:
dt = Current Data Table();
dt << New Column("Score Binned", Character);
dt:"Score Binned"n << Add Column Properties(
Value Labels(
{0.5 = "0.5 — 0.59", 0.6 = "0.6 — 0.69", 0.7 = "0.7 — 0.79", 0.8 = "0.8 — 0.89", 0.9 =
"0.9 — 1"}
),
Use Value Labels( 1 ),
Formula(
If(
(0.5 + 0.1 * Floor( (:Score - 0.5) / 0.1 )) == 1, 0.9,
0.5 + 0.1 * Floor( (:Score - 0.5) / 0.1 )
)
)
);Ora, di nuovo sul nostro tavolo, Tabelle> Riepilogo ci porta dove vogliamo andare. Mettiamo Group e Score Binned in Group, e questo è tutto ciò di cui abbiamo effettivamente bisogno:


Ora, N righe è ciò che vogliamo, è solo un nome sbagliato, quindi facciamo doppio clic sulla parola "Sorgente" a sinistra e copiamo lo script di creazione della tabella e sostituiamo il riferimento alla tabella con nome "dt", la nostra tabella di lavoro, e prendiamo la nuova tabella nella variabile "summ":

dt = Current Data Table();
dt << New Column("Score Binned", Character);
dt:"Score Binned"n << Add Column Properties(
Value Labels(
{0.5 = "0.5 — 0.59", 0.6 = "0.6 — 0.69", 0.7 = "0.7 — 0.79", 0.8 = "0.8 — 0.89", 0.9 =
"0.9 — 1"}
),
Use Value Labels( 1 ),
Formula(
If(
(0.5 + 0.1 * Floor( (:Score - 0.5) / 0.1 )) == 1, 0.9,
0.5 + 0.1 * Floor( (:Score - 0.5) / 0.1 )
)
)
);
summ = dt << Summary(
Group( :Group, :Score Binned ),
Freq( "None" ),
Weight( "None" )
);Infine, rinomina N righe in "Total_Count" come desiderato:
dt = Current Data Table();
dt << New Column("Score Binned", Character);
dt:"Score Binned"n << Add Column Properties(
Value Labels(
{0.5 = "0.5 — 0.59", 0.6 = "0.6 — 0.69", 0.7 = "0.7 — 0.79", 0.8 = "0.8 — 0.89", 0.9 =
"0.9 — 1"}
),
Use Value Labels( 1 ),
Formula(
If(
(0.5 + 0.1 * Floor( (:Score - 0.5) / 0.1 )) == 1, 0.9,
0.5 + 0.1 * Floor( (:Score - 0.5) / 0.1 )
)
)
);
summ = dt << Summary(
Group( :Group, :Score Binned ),
Freq( "None" ),
Weight( "None" )
);
summ:"N Rows"n << Set Name("Total_Count");Ora chiudi la tabella di riepilogo, elimina la colonna Punteggio raggruppato dalla tabella di origine e prova lo script:

Ancora JSL finale:
dt = Current Data Table();
dt << New Column("Score Binned", Character);
dt:"Score Binned"n << Add Column Properties(
Value Labels(
{0.5 = "0.5 — 0.59", 0.6 = "0.6 — 0.69", 0.7 = "0.7 — 0.79", 0.8 = "0.8 — 0.89", 0.9 =
"0.9 — 1"}
),
Use Value Labels( 1 ),
Formula(
If(
(0.5 + 0.1 * Floor( (:Score - 0.5) / 0.1 )) == 1, 0.9,
0.5 + 0.1 * Floor( (:Score - 0.5) / 0.1 )
)
)
);
summ = dt << Summary(
Group( :Group, :Score Binned ),
Freq( "None" ),
Weight( "None" )
);
summ:"N Rows"n << Set Name("Total_Count");Testato sui tuoi dati allegati, che ho letteralmente notato:flushed_face:

Ecco un paio di modi per farlo.Ma poiché l'esempio seguente è basato solo sulla funzionalità primaria di JMP, suggerisco caldamente di leggere Discovering JMP e Using JMP documents, dalla JMP Documentation Library, disponibile nel menu a discesa Guida.
Names Default To Here( 1 );
dt = Current Data Table();
dt << New Column( "Score Category",
character,
formula(
If(
:Score < .6, "0.50-0.59",
:Score < .8, "0.60-0.79",
:Score < .9, "0.80-0.89",
"0.90-1.00",
)
)
);
dtSum = dt << Summary(
Group( :Group, :Score Category ),
Sum( :Count ),
Freq( "None" ),
Weight( "None" ),
Link to original data table( 0 )
);
dtSum << delete columns( :N Rows );
dtSum:Name( "Sum(Count)" ) << set name( "Total_Count" );
// or
dt:score << set property(
"value labels",
{0.5 <= "0.50-0.59" < 0.6, 0.6 <= "0.60-0.79" < 0.8, 0.8 <= "0.80-0.89" < 0.9, 0.9
<= "0.90-1.00" <= 1}
);
dtSum = dt << Summary(
Group( :Group, :Score ),
Sum( :Count ),
Freq( "None" ),
Weight( "None" ),
Link to original data table( 0 )
);
dtSum << delete columns( :N Rows );
dtSum:Name( "Sum(Count)" ) << set name( "Total_Count" );