Wie kann ich ein Skript schreiben, um Spalten in einer neuen Tabelle automatisch zu gruppieren?Hallo,
Ich schreibe derzeit ein Skript, um im Wesentlichen drei „Referenz“-Tabellen mithilfe der Funktionen „Verbinden“, „Transponieren“ und „Aktualisieren“ miteinander zu verbinden. Mein Skript ermöglicht die Aktualisierung der endgültigen Ausgabetabelle jedes Mal, wenn ich Zeilen zur ersten „Referenz“-Tabelle hinzufüge.
Ich habe mich gefragt, ob es möglich wäre, mein Skript so zu bearbeiten, dass Spalten in der endgültigen Ausgabetabelle basierend auf dem Wert in einer Spalte der ersten „Referenz“-Tabelle automatisch gruppiert werden (z. B. die Funktion „Spalten gruppieren“). Diese Spalte wird in keiner der Tabellenfunktionen mitgebracht, da dies zu Problemen bei der Transposition führen würde. Es ist wichtig, dass diese Gruppierungen bei jeder Aktualisierung der Abschlusstabelle bestehen bleiben.
Ich freue mich über Ihr Feedback.
-Brian D.
Betreff: Wie kann ich ein Skript schreiben, um Spalten in einer neuen Tabelle automatisch zu gruppieren?Sehen Sie sich den Skriptindex für die Verwendung von Gruppenspalten an.
Hier ist eine Möglichkeit, das zu tun, was Sie angegeben haben
Names Default To Here( 1 );
dt = Open( "$SAMPLE_DATA/big class.jmp" );
dt2 = New Table( "groupings",
New Column( "ID", character, set values( {"name", "age", "sex", "height", "weight"} ) ),
New Column( "Type", character, set values( {"A", "B", "C", "B", "A"} ) )
);
// Split data into columns based on Type
dtSplit = dt2 << Split( Split By( :Type ), Split( :ID ), Sort by Column Property );
// Process through the Split data table, creating the groups in the first data table
For( Group = 1, Group <= N Cols( dtSplit ), Group++,
theGroup = Column( dtSplit, Group ) << get values;
For(i=nitems(theGroup), i>=1,i--,if(theGroup[i] == "",
remove from(thegroup,i,1)));
grouping = dt << group columns( theGroup ); <BR /><BR /><FONT face="Consolas,Monaco,"Andale Mono","Ubuntu Mono",monospace" size="2" style="background-color: #f5f5f5;" color="#b00000">dt << Rename Column Group( grouping, (column(dtSplit, group)<<GET name="">
);</GET></FONT>Betreff: Wie kann ich ein Skript schreiben, um Spalten in einer neuen Tabelle automatisch zu gruppieren?Nicht ganz, obwohl eine ähnliche If-Anweisung nützlich sein könnte. Die von mir erwähnte Referenztabelle (Tabelle 1) enthält zwei relevante Spalten: „ID“ und „Typ“. In der endgültigen Ausgabetabelle (Tabelle 2) ist die Spalte „ID“ transponiert, sodass die Werte unter dieser Spalte in Tabelle 1 jetzt Spaltennamen in Tabelle 2 sind. Ich möchte diese Spalten in Tabelle 2 basierend auf ihren entsprechenden Werten in der Spalte „Typ“ in Tabelle 1 gruppieren.Betreff: Wie kann ich ein Skript schreiben, um Spalten in einer neuen Tabelle automatisch zu gruppieren?Ist das das, was Sie suchen?
Names Default To Here( 1 );
dt1 = New Table( "table1", add rows(1), New Column( "test", set values( [1] ) ) );
dt2 = New Table( "table2", add rows(2),
new column( "x1", character, set values( {"a", "b"} ) ),
New Column( "x2", character, set values( {"c", "d"} ) )
);
If( dt1:test[1] == 1,
dt2 << combine columns( delimiter( "," ),
columns( dt2:x1, dt2:x2 ), Column Name( "Combined" ) )
);