Script pour la pile de colonnes par préfixe pour un nombre variable de colonnesJ'essaie de produire un script général qui importera mes données d'Excel sous forme de table de données, puis empilera mes colonnes en fonction du préfixe du nom de la colonne. Je souhaite qu'il soit appliqué à différents ensembles de données (pas en même temps - juste un script général qui pourrait s'appliquer à tous) chacun avec un nombre d'échantillons différent (colonnes), où chaque colonne de données est répertoriée comme : S01 Vol Density (% ), S02 Vol Densité (%), S03 Vol Densité (%) ... Sn Vol Density (où n = n'importe quel nombre entier).
Je pense que la façon de procéder est de regrouper les colonnes par le préfixe, puis d'empiler le groupe, mais je ne sais pas comment procéder.
J'espère que cela avait du sens - encore nouveau dans les scripts, donc désolé si ma question n'est pas la plus claire
N.-B. L'importation de données n'est pas un problème, juste l'empilement
Re : Script pour la pile de colonnes par préfixe pour un nombre variable de colonnesOui, voici comment procéder :
For( i = 1, i <= N Col( dt ), i++,
temp_name = Column( dt, i ) << Get Name;
If( Contains( temp_name, "Vol Density" ) > 0,
Column( dt, i ) << Set Name( Word( 1, temp_name ) )
);
);
Re : Script pour la pile de colonnes par préfixe pour un nombre variable de colonnesMerci! Si je souhaitais ensuite recoder la colonne (avec un script) de sorte que seul le préfixe reste, c'est-à-dire qu'il ne lise que S01, S02, etc., cela peut-il être fait de la même manière que la pile ?Re : Script pour la pile de colonnes par préfixe pour un nombre variable de colonnesSalut @nhun ,
Bienvenue dans la communauté !
C'est assez facile à faire en peu de code.Voici une méthode qui parcourt les noms de colonnes et insère celles avec les sous-chaînes correspondantes dans une liste que nous pouvons utiliser avec Stack.J'utilise le jeu de données d'épaisseur de la bibliothèque de données d'échantillons.
dt = Open("$SAMPLE_DATA/Quality Control/Thickness.jmp");
stack_cols = {}; //list to hold the names of columns I want to stack
str_match = "Thickness"; //Substring in column name I want to find
names = dt << Get Column Names;
for(i=1,i<=N Items(names),i++,
If(Contains(char(names[i]),str_match) > 0,
Insert Into(stack_cols, names[i])
)
);
dt << Stack(
columns(stack_cols),
Source Label Column( "Label" ),
Stacked Data Column( "Data" )
);Vous auriez juste besoin de remplacer le dt par votre propre table et str_match = "Vol Density"