Untergruppenbildung von Durchschnittswerten basierend auf IDs in mehreren Spalten?Ich brauche ein JSL-Skript, um Durchschnittswerte aus mehreren Datenspalten zu nehmen und sie in einer separaten Datentabelle zu unterteilen. Allerdings müssen die Durchschnittswerte nach mehreren kategorischen Kennungen gruppiert werden. Für die folgende Datentabelle bräuchte ich beispielsweise die Durchschnittswerte von SubjektA Gruppe X und Subjekt A Gruppe y als separate Zeilen, wie in der zweiten Beispieltabelle gezeigt. Etwas Ähnliches wie diese vorherige Frage. Wie würde ich das Skript ändern, um Durchschnittswerte für mehrere Spalten einzuschließen? Wenn ich die Durchschnittsspalten in der Quelldatentabelle erstellen und dann separat unterteilen muss, würde das auch funktionieren.
Beispiel einer Quelltabelle:
| Thema | Gruppe | Daten A | Daten 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 |
Beispiel einer Ausgabetabelle:
| Thema | Gruppe | Daten A Durchschnitt | Daten B Durchschnitt |
| A | x | 5 | 1 |
| A | y | 0 | 2 |
| B | x | 5 | 2 |
| B | z | 5 | 2 |
Ich verwende JMP Pro 18 unter Windows.
Automatisierung und SkriptingDatenzusammenführung und -bereinigungWindowsBetreff: Untergruppenbildung von Durchschnittswerten basierend auf IDs in mehreren Spalten?Hallo @Mcc99 ,
Hierfür gibt es verschiedene Möglichkeiten, aber eine der einfachsten ist wahrscheinlich die Verwendung der Tabulate-Plattform.
Mithilfe der von Ihnen bereitgestellten Beispieldatentabelle können Sie dies mit nur ein wenig JSL tun:
Tabulate(
Add Table(
Column Table( Analysis Columns( :Data A, :Data B ), Statistics( Mean ) ),
Row Table( Grouping Columns( :Subject, :Group ) )
)
);
Die entsprechende Ausgabe der Tabulate-Plattform sieht folgendermaßen aus:

Und ich glaube, das ist genau das, wonach Sie suchen. Sie können natürlich weitere Statistiken hinzufügen oder die Tabellierung auf andere Weise durchführen, aber ich glaube, das ist es, was Sie wollen. Sie können dann auf „Fertig“ klicken und im Dropdown-Menü des roten Hotbuttons „In Datentabelle erstellen“ auswählen und dann Ihre Datentabelle von der Plattform abrufen (Sie können auch JSL verwenden, um dies alles für Sie zu erledigen).
Es sieht so aus, als ob der vorherige Beitrag, auf den Sie sich bezogen haben, stattdessen eine Spaltenformel verwendet hat, was der andere Weg war, den ich vorgeschlagen hätte, aber dort wurde es bereits beantwortet, sodass Sie diesen Beitrag jederzeit genauer durchlesen können, wenn Sie diesen Weg gehen möchten. Aber ich denke wirklich, dass die Tabulate-Plattform das ist, was Sie wollen – und Sie können mit den verschiedenen Gruppierungsspalten usw. herumspielen, um zu sehen, wie sich die Daten ändern.
Hoffe das hilft!,
DS
Betreff: Untergruppenbildung von Durchschnittswerten basierend auf IDs in mehreren Spalten?Danke! Ich habe nicht einmal daran gedacht, tabulate zu verwenden, aber es macht mein Skript viel übersichtlicher als die Spaltenformel. Ich habe jedoch Probleme, die tabulate-Tabelle als neue Datentabelle zu speichern. Ich habe das folgende Skript nach dem obigen tabulate-Skript hinzugefügt. Obwohl sich das tabulate-Fenster öffnet, wird die neue Datentabelle nicht geöffnet.
<< Make Into Data Table(Outputtable("Average data"));Betreff: Untergruppenbildung von Durchschnittswerten basierend auf IDs in mehreren Spalten?@Mcc99
Sie können auch Tabelle > Zusammenfassung verwenden. Der Vorschaubereich hilft sicherzustellen, dass Sie die richtige Ausgabe erhalten, insbesondere wenn Sie nach mehreren Spalten gruppieren.
Tabellen > Zusammenfassung:

Quellskript:
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" )
);
Betreff: Untergruppenbildung von Durchschnittswerten basierend auf IDs in mehreren Spalten?Hallo @Mcc99 ,
Sind Sie sicher, dass Sie Ihre Objekte in JSL richtig referenzieren? Wenn Sie den folgenden Code verwenden (vorausgesetzt, Sie arbeiten mit der Datentabellenstruktur wie in Ihrem Beispiel), wird mit Tabulate die korrekte tabellarische Datentabelle generiert, anschließend in eine Datentabelle mit dem angegebenen Namen umgewandelt und das Tabulate-Fenster geschlossen.
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>Hoffe das hilft!,</P>
<P>DS</P>