Ich habe eine Tabelle wie diese:
| Aufführen | Apfelrot | Apfelgelb | Bananenrot | Bananengelb |
| A | 1 | 11 | 21 | 31 |
| B | 2 | 12 | 22 | 32 |
| C | 3 | 13 | 23 | 33 |
Ich möchte die Daten mit mehreren Serien stapeln (hier Apfel und Banane), möchte aber nur eine Beschriftung für alle Serien (hier rot und gelb). Ich möchte auch die linke Seite des Titels beibehalten (hier Apfel und Banane). Die Ausgabe ist wie folgt:
| Aufführen | Apfel | Banane | Gruppe |
| A | 1 | 21 | Rot |
| A | 11 | 31 | Gelb |
| B | 2 | 22 | Rot |
| B | 12 | 32 | Gelb |
| C | 3 | 23 | Rot |
| C | 13 | 33 | Gelb |
Ich habe die Stack-Funktion ausprobiert, denke aber, dass dafür ein spezielles Skript erforderlich ist. Vielen Dank!
Wenn Sie die Daten stapeln, dann eine neue Spalte für die Frucht und eine weitere für die Farbe erstellen, können Sie die Daten dann in die erforderliche Datentabelle aufteilen.
Das folgende Skript veranschaulicht, wie dies erreicht wird.Allerdings erstelle ich das Skript so, dass ich die Schritte interaktiv ausführe, sodass Sie die interaktiven Schritte problemlos wiederholen können.
Names Default To Here( 1 );
// Create the sample data table
dt = New Table( "Example",
Add Rows( 3 ),
New Script(
"Source",
Data Table( "Untitled 67" ) << Split(
Split By( :Column 2 ),
Split( :Column 1 ),
Sort by Column Property
)
),
New Column( "List", Character, "Nominal", Set Values( {"a", "b", "c"} ) ),
New Column( "Apple red", Numeric, "Continuous", Format( "Best", 12 ), Set Values( [1, 2, 3] ) ),
New Column( "Apple yellow", Numeric, "Continuous", Format( "Best", 12 ), Set Values( [11, 12, 13] ) ),
New Column( "Banana red", Numeric, "Continuous", Format( "Best", 12 ), Set Values( [21, 22, 23] ) ),
New Column( "Banana yellow", Numeric, "Continuous", Format( "Best", 12 ), Set Values( [31, 32, 33] ) )
);
// Stack the columns
dtStack = dt << Stack(
columns( :Apple red, :Apple yellow, :Banana yellow, :Banana red ),
Source Label Column( "Label" ),
Stacked Data Column( "Data" )
);
// Create 2 New Columns separating the fruit from the color
dtStack << New Column("Fruit", character, formula(word(1,:Label," ")));
dtStack << New Column("Color", character, formula(word(2,:Label," ")));
// Split the data back into the required new columns
dtFinal = dtStack << Split(
Split By( :Fruit ),
Split( :Data ),
Remaining Columns( Drop( :Label ) ),
Sort by Column Property
);

Dies kann in drei Vorgängen ohne Skripting erfolgen.
Erste Benutzung Tabellen->Stapel um Ihre vier Spalten zu stapeln ( Apfelrot, Apfelgelb, Bananenrot, Bananengelb ) in eine einzelne Spalte.
Am Ende erhalten Sie Folgendes:

Jetzt benutzen Cols->Utlities->Text to Columns um die Frucht von der Farbe in Ihrer Beschriftungsspalte zu trennen. Geben Sie ein Leerzeichen in das Trennzeichenfeld ein.

Am Ende erhalten Sie zwei neue Spalten. Benennen Sie sie um Obst Und Farbe . Sie können die löschen Etikett Spalte.

Jetzt benutzen Tabellen->Split die aufteilen Daten Spalte nach Obst.

Jetzt erhalten Sie die gewünschte Datentabelle mit, an Apfel Spalte und Banane Spalte.
