Sottoinsiemi di medie in base agli ID in più colonne?Ho bisogno di uno script JSL per prendere le medie da più colonne di dati e sottometterle in una tabella dati separata. Tuttavia, ho bisogno che le medie siano raggruppate in base a più identificatori categoriali. Ad esempio, per la tabella dati sottostante avrei bisogno delle medie di SubjectA Group X e Subject A Group y, come righe separate come mostrato nella seconda tabella di esempio. Qualcosa di simile a questa domanda precedente. Come potrei modificare lo script per includere le medie per più colonne? Se ho bisogno di creare le colonne medie nella tabella dati di origine e quindi sottometterle separatamente, funzionerebbe anche.
Esempio di tabella sorgente:
| Soggetto | Gruppo | Dati A | Dati B |
| A | x | 5 | 2 |
| A | y | 0 | 2 |
| A | x | 5 | 0 |
| B | z | 5 | 2 |
| B | x | 5 | 2 |
| B | x | 5 | 2 |
Esempio di tabella di output:
| Soggetto | Gruppo | Dati A Media | Dati B Media |
| A | x | 5 | 1 |
| A | y | 0 | 2 |
| B | x | 5 | 2 |
| B | z | 5 | 2 |
Utilizzo JMP Pro 18 su Windows.
Automazione e scriptingFusione e pulizia dei datiFinestreRi: Creazione di sottoinsiemi di medie in base agli ID in più colonne?Ciao @Mcc99 ,
Esistono diversi modi per farlo, ma uno dei più semplici potrebbe essere quello di utilizzare la piattaforma Tabulate.
Utilizzando la tabella dati di esempio che hai fornito, puoi farlo con un pizzico di JSL:
Tabulate(
Add Table(
Column Table( Analysis Columns( :Data A, :Data B ), Statistics( Mean ) ),
Row Table( Grouping Columns( :Subject, :Group ) )
)
);
L'output corrispondente dalla piattaforma Tabulate appare così:

Che credo sia esattamente ciò che stai cercando. Puoi ovviamente aggiungere altre statistiche da includere o eseguire il Tabulate in altri modi, ma credo che questo sia ciò che vuoi. Puoi quindi fare clic su Done e con il menu a discesa del pulsante rosso caldo, puoi selezionare Make Into Data Table, quindi ottenere la tua tabella dati dalla piattaforma (puoi anche usare JSL per fare tutto questo per te).
Sembra che il post precedente a cui hai fatto riferimento abbia utilizzato una formula di colonna, che era l'altro modo che avrei suggerito, ma è già stato risposto lì, quindi puoi sempre rivedere quel post in modo più dettagliato se è questo il modo in cui vuoi procedere. Ma, penso davvero che la piattaforma Tabulate sia ciò che desideri, e puoi giocare con le diverse colonne di raggruppamento e così via per vedere come cambiano i dati.
Spero che questo aiuti!
S.S.
Ri: Creazione di sottoinsiemi di medie in base agli ID in più colonne?Grazie! Non avevo nemmeno pensato di usare tabulate, ma rende il mio script molto più pulito della formula di colonna. Tuttavia, ho problemi a salvare la tabella tabulate come una nuova tabella dati. Ho aggiunto lo script qui sotto, dopo lo script tabulate qui sopra. Sebbene la finestra tabulate si apra, la nuova tabella dati non lo fa.
<< Make Into Data Table(Outputtable("Average data"));Ri: Creazione di sottoinsiemi di medie in base agli ID in più colonne?@Mcc99
Un'altra opzione che potresti prendere in considerazione è usare Tabella > Riepilogo. Il riquadro Anteprima ti aiuta ad assicurarti di avere l'output corretto, specialmente quando stai raggruppando per più colonne.
Tabelle > Riepilogo:

Sceneggiatura originale:
Data Table( "Data Table Name" ) << Summary(
Group( :Subject, :Group ),
Mean( :Data A ),
Mean( :Data B ),
Freq( "None" ),
Weight( "None" ),
output table name( "Summary of Data Table Name by Subject, Group" )
);
Ri: Creazione di sottoinsiemi di medie in base agli ID in più colonne?Ciao @Mcc99 ,
Sei sicuro di fare riferimento correttamente ai tuoi oggetti in JSL? Se usi il codice sottostante (supponendo che tu stia lavorando con la struttura della tabella dati come nel tuo esempio, genererà la corretta tabella dati tabulata usando Tabulate, quindi la trasformerà in una tabella dati con il nome specificato e chiuderà anche la finestra Tabulate.
Names Default To Here( 1 );
dt = Current Data Table();
dttab = dt << Tabulate(
Add Table(
Column Table( Analysis Columns( :Data A, :Data B ), Statistics( Mean ) ),
Row Table( Grouping Columns( :Subject, :Group ) )
)
);
dttab << Make Into Data Table( OutputTable( "Average Data" ) );
dttab <<CLOSE window=""></CLOSE>
<P>Spero che questo aiuti!</P>
<P>S.S.</P>