J'ai une table comme celle-ci:
| liste | Rouge pomme | Jaune pomme | Rouge banane | Jaune banane |
| une | 1 | 11 | 21 | 31 |
| b | 2 | 12 | 22 | 32 |
| c | 3 | 13 | 23 | 33 |
Je voudrais empiler les données avec plusieurs séries (voici la pomme et la banane), mais je veux seulement 1 étiquette pour toutes les séries (ici le rouge et le jaune). La sortie est comme:
| liste | Pomme | banane | groupe |
| une | 1 | 21 | rouge |
| une | 11 | 31 | Jaune |
| b | 2 | 22 | rouge |
| b | 12 | 32 | Jaune |
| c | 3 | 23 | rouge |
| c | 13 | 33 | Jaune |
J'ai essayé la fonction de pile, mais je pense que cela nécessite un script spécial. Merci beaucoup!
Cela peut être fait en trois opérations sans script.
Première utilisation Tables-> Pile pour empiler vos quatre colonnes ( Rouge pomme, Jaune pomme, Rouge banane, Jaune banane ) dans une seule colonne.
Vous vous retrouverez avec ceci:

Maintenant, utilisez Cols-> Utlities-> Text to Columns pour séparer le fruit de la couleur de votre colonne Étiquette. Mettez un espace dans le champ délimiteur.

Vous vous retrouverez avec deux nouvelles colonnes. Renommez-les Fruit et Couleur . Vous pouvez supprimer le Étiquette colonne.

Maintenant, utilisez Tables-> Split pour diviser le Les données colonne par Fruit.

Maintenant, vous obtiendrez le tableau de données que vous souhaitez, un Pomme colonne et banane colonne.

Si vous empilez les données, puis créez une nouvelle colonne pour le fruit et une autre pour la couleur, vous pouvez ensuite diviser les données dans le tableau de données requis.
Le script ci-dessous illustre comment y parvenir. Cependant, faire les étapes de manière interactive est la façon dont je crée le script, vous pouvez donc facilement répéter les étapes interactives.
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
);
