Ho un tavolo come questo:
| Elenco | Rosso mela | Giallo mela | Rosso banana | Giallo banana |
| un' | 1 | 11 | 21 | 31 |
| B | 2 | 12 | 22 | 32 |
| c | 3 | 13 | 23 | 33 |
Vorrei impilare i dati con più serie (qui è mela e banana), ma voglio solo 1 etichetta per tutte le serie (qui è rosso e giallo). L'output è simile a:
| Elenco | Mela | Banana | gruppo |
| un' | 1 | 21 | rosso |
| un' | 11 | 31 | giallo |
| B | 2 | 22 | rosso |
| B | 12 | 32 | giallo |
| c | 3 | 23 | rosso |
| c | 13 | 33 | giallo |
Ho provato la funzione stack ma penso che questo abbia bisogno di uno script speciale. Grazie mille!
Questo può essere fatto in tre operazioni senza script.
Innanzitutto, usa Tavoli-> Stack impilare le tue quattro colonne ( Rosso mela, giallo mela, rosso banana, giallo banana ) in una singola colonna.
Finirai con questo:

Adesso usa Col-- Utilità-> Testo in colonne per separare il frutto dal colore nella colonna Etichetta. Inserisci uno spazio nel campo delimitatore.

Ti ritroverai con due nuove colonne. Rinominali Frutta e Colore . È possibile eliminare il Etichetta colonna.

Adesso usa Tavoli-> Split per dividere il file Dati colonna di Frutta.

Ora otterrai la tabella dei dati che desideri, an Mela colonna e Banana colonna.

Se si impilano i dati, quindi si crea una nuova colonna per Fruit e un'altra per il Colore, è possibile quindi dividere i dati nella tabella di dati richiesta.
Lo script seguente mostra come ottenere questo risultato. Tuttavia, eseguire i passaggi in modo interattivo è il modo in cui creo lo script, in modo da poter ripetere facilmente i passaggi interattivi.
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
);
