Tengo una mesa como esta:
| Lista | Manzana roja | Amarillo manzana | Rojo banana | Amarillo plátano |
| un | 1 | 11 | 21 | 31 |
| si | 2 | 12 | 22 | 32 |
| C | 3 | 13 | 23 | 33 |
Me gustaría apilar los datos con varias series (aquí es manzana y plátano), pero solo quiero 1 etiqueta para todas las series (aquí es rojo y amarillo). La salida es como:
| Lista | manzana | Plátano | grupo |
| un | 1 | 21 | rojo |
| un | 11 | 31 | amarillo |
| si | 2 | 22 | rojo |
| si | 12 | 32 | amarillo |
| C | 3 | 23 | rojo |
| C | 13 | 33 | amarillo |
Intenté la función de pila, pero creo que esto necesita un script especial. Muchas gracias!
Esto se puede hacer en tres operaciones sin secuencias de comandos.
Primer uso Tablas-> Pila para apilar tus cuatro columnas ( Manzana roja, Manzana amarilla, Banana roja, Banana amarilla ) en una sola columna.
Terminarás con esto:

Ahora usa Cols-> Utlities-> Text to Columns para separar la fruta del color en su columna Etiqueta. Pon un espacio en el campo delimitador.

Terminarás con dos nuevas columnas. Renombrarlas Fruta y Color . Puedes borrar el Etiqueta columna.

Ahora usa Tablas-> Split dividir el Datos columna por Fruta.

Ahora obtendrá la tabla de datos que desea, un manzana columna y Plátano columna.

Si apila los datos, luego crea una nueva columna para la fruta y otra para el color, puede dividir los datos en la tabla de datos requerida.
El siguiente script ilustra cómo lograr esto. Sin embargo, hacer los pasos de forma interactiva es cómo construyo el script, para que pueda repetir fácilmente los pasos interactivos.
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
);
