Sous-ensembles de moyennes basés sur des identifiants dans plusieurs colonnes ?J'ai besoin d'un script JSL pour prendre les moyennes de plusieurs colonnes de données et les sous-ensembles dans une table de données distincte. Cependant, j'ai besoin que les moyennes soient regroupées par plusieurs identifiants catégoriels. Par exemple, pour le tableau de données ci-dessous, j'aurais besoin des moyennes de SubjectA Group X et Subject A Group y, sous forme de lignes séparées, comme indiqué dans le deuxième exemple de tableau. Quelque chose de similaire à cette question précédente. Comment modifier le script pour inclure les moyennes de plusieurs colonnes ? Si je dois créer les colonnes moyennes dans la table de données source, puis les sous-ensembles séparément, cela fonctionnerait également.
Exemple de tableau source :
| Sujet | Groupe | Données A | Données 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 |
Exemple de tableau de sortie :
| Sujet | Groupe | Données A Moyenne | Données B Moyenne |
| A | x | 5 | 1 |
| A | y | 0 | 2 |
| B | x | 5 | 2 |
| B | z | 5 | 2 |
J'utilise JMP Pro 18 sous Windows.
Automatisation et scriptsFusion et nettoyage des donnéesFenêtresRé : Sous-ensembles de moyennes basés sur des identifiants dans plusieurs colonnes ?Salut @Mcc99 ,
Il existe plusieurs façons différentes de procéder, mais l'une des plus simples est peut-être d'utiliser la plateforme Tabulate.
En utilisant le tableau de données d'exemple que vous avez fourni, vous pouvez le faire avec juste un peu de JSL :
Tabulate(
Add Table(
Column Table( Analysis Columns( :Data A, :Data B ), Statistics( Mean ) ),
Row Table( Grouping Columns( :Subject, :Group ) )
)
);
La sortie correspondante de la plateforme Tabulate ressemble à ceci :

Ce qui, je crois, est exactement ce que vous recherchez. Vous pouvez bien sûr ajouter d'autres statistiques à inclure ou effectuer le tableau d'autres manières, mais je pense que c'est ce que vous voulez. Vous pouvez ensuite cliquer sur Terminé et avec le menu déroulant du bouton rouge, vous pouvez sélectionner Créer un tableau de données, puis obtenir votre tableau de données à partir de la plateforme (vous pouvez également utiliser JSL pour faire tout cela pour vous).
Il semble que le message précédent auquel vous faites référence utilisait une formule de colonne à la place, ce qui était l'autre méthode que j'aurais suggérée, mais la réponse y a déjà été apportée, vous pouvez donc toujours consulter ce message plus en détail si c'est la voie que vous souhaitez suivre. Mais je pense vraiment que la plate-forme Tabulate est ce que vous voulez - et vous pouvez jouer avec les différentes colonnes de regroupement et ainsi de suite pour voir comment les données changent.
J'espère que cela aide!,
DS
Ré : Sous-ensembles de moyennes basés sur des identifiants dans plusieurs colonnes ?Merci ! Je n'avais même pas pensé à utiliser la fonction tabulation, mais cela rend mon script beaucoup plus propre que la formule de colonne. Cependant, j'ai du mal à enregistrer la table tabulation en tant que nouvelle table de données. J'ai ajouté le script ci-dessous, après le script tabulation ci-dessus. Bien que la fenêtre tabulation s'ouvre, la nouvelle table de données ne s'ouvre pas.
<< Make Into Data Table(Outputtable("Average data"));Ré : Sous-ensembles de moyennes basés sur des identifiants dans plusieurs colonnes ?@Mcc99
Une autre option que vous pouvez envisager est d'utiliser Tableau > Résumé. Le volet Aperçu permet de s'assurer que vous obtenez le résultat correct, en particulier lorsque vous effectuez un regroupement par plusieurs colonnes.
Tableaux > Sommaire :

Script source :
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" )
);
Ré : Sous-ensembles de moyennes basés sur des identifiants dans plusieurs colonnes ?Salut @Mcc99 ,
Êtes-vous sûr de référencer correctement vos objets dans JSL ? Si vous utilisez le code ci-dessous (en supposant que vous travaillez avec la structure de la table de données comme dans votre exemple), il générera la table de données tabulée correcte à l'aide de Tabulate, puis la transformera en une table de données avec le nom donné et fermera également la fenêtre 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>J'espère que cela aide!,</P>
<P>DS</P>