Changer le nom de chaque troisième (n+3) colonne(s) avec un nom spécifique ; 100+ colonnesSalut tout le monde,
J'essaie de nommer un tas de colonnes, plus de 100 d'entre elles. J'ai fait un tas de trucs de texte en colonnes et j'ai de nombreux ensembles de trois colonnes auxquelles je veux donner les mêmes noms. Voir ci-dessous:

Ci-dessus montre les colonnes avec les noms que je veux avoir, à gauche de la ligne rouge. Il montre également les colonnes avec des noms que je veux remplacer. Comme vous pouvez le voir, j'aimerais changer toutes les trois colonnes, en commençant à n = 1 (ou quel que soit le numéro de colonne auquel je veux commencer), et toutes les trois colonnes après cela (n + 3), renommer la colonne en "pX ". Il en va de même pour "num_after_pipe" et "value". Tous jusqu'à un certain point.
Je travaille avec le script suivant pour renommer chaque ensemble de trois colonnes"
dt_stack:"Data 1"n+3<<Set Name("pX");
dt_stack:"Data 2"n<<Set Name("num_after_pipe");
dt_stack:"Data 3"n<<Set Name("value");
dt_stack:"Data 4"n<<Set Name("pX");
dt_stack:"Data 5"n<<Set Name("num_after_pipe");
dt_stack:"Data 6"n<<Set Name("value");
dt_stack:"Data 7"n<<Set Name("pX");
dt_stack:"Data 8"n<<Set Name("num_after_pipe");
.....
Aucune suggestion?
Merci!
Salutations,
AlphaLion662
Tableau de donnéesScriptRe : Changer le nom de chaque troisième (n+3) colonne(s) avec un nom spécifique ; 100+ colonnesBonjour @AlphaLion662 ,
Est ce que c'est ce que vous recherchiez? Gardez à l'esprit que je ne sais pas comment vous souhaitez modifier les noms de colonne, j'ai donc simplement ajouté des préfixes.Vous pouvez voir les préfixes dans les variables premier, deuxième et troisième.Le changement de nom de colonne se produit dans le bloc sous la note " Changement de nom de col ici ".
Names default to here(1);
clear log();
dt = open( "$SAMPLE_DATA/Arrhythmia.jmp" );
// Gets all column names in a list
allcols = dt << Get column names();
// Stores the number of columns
numcols = N Items( allcols );
// Some modifier to column names
first = "Tree";
second = "Car";
third = "Star";
For( i = 1, i <= numcols, i++,
// Temporarly stores the column name for later usage
temp = column( dt, allcols[i] ) << Get Name;
if(
// First col, then every 3rd col thereafter
i == 1 | Modulo( i - 1, 3 ) == 0,
// Col name change here
col_Name1 = column(dt,i) << Get Name;
newname1 = first || "_" || col_Name1;
eval( column(allcols[i] ) ) << Set Name( newname1 ),
// Second col, then every 3rd col thereafter
i == 2 | Modulo( i - 2, 3 ) == 0, //( i - 2 ) % 3
// Col name change here
col_Name2 = column(dt,i) << Get Name;
newname2 = second || "_" || col_Name2;
eval( column(allcols[i] ) ) << Set Name( newname2 ),
// Third col, then every 3rd col thereafter
i == 3 | Modulo( i - 3, 3 ) == 0,
// Col name change here
col_Name3 = column(dt,i) << Get Name;
newname3 = third || "_" || col_Name3;
eval( column(allcols[i] ) ) << Set Name( newname3 ),
);
);
Re : Changer le nom de chaque troisième (n+3) colonne(s) avec un nom spécifique ; 100+ colonnesSalut StarfruitBob,
Après avoir tripoté pendant un certain temps, cela a fonctionné pour moi. Merci!
Re : Changer le nom de chaque troisième (n+3) colonne(s) avec un nom spécifique ; 100+ colonnesDans votre cas, vous pouvez également incrémenter la boucle en 3 secondes et définir trois colonnes en même temps en une seule boucle
Names Default To Here(1);
dt = Open("$SAMPLE_DATA/Probe.jmp");
dt << Ungroup Columns(); // easier to see what is going on if we remove Responses column group
start_col_idx = 4;
colnames = {"px", "num_after_pipe", "value"};
For(i = start_col_idx, i <= N Cols(dt), i = i + 3, // we can increment in 3s
Try( // lazy try-catch to exit when we cannot set more column names
Column(i) << Set Name(colnames[1]);
Column(i + 1) << Set Name(colnames[2]);
Column(i + 2) << Set Name(colnames[3]);
,
show(exception_msg);
break();
);
);
