Ändern des Namens jeder dritten (n+3) Spalte(n) mit spezifischem Namen; Über 100 SpaltenHallo alle,
Ich versuche, eine Reihe von Spalten zu benennen, über 100 davon. Ich habe eine Menge Text-zu-Spalten-Zeug gemacht und habe viele Sätze von drei Spalten, denen ich die gleichen Namen geben möchte. Siehe unten:

Oben zeigt die Spalten mit Namen, die ich haben möchte, links von der roten Linie. Es zeigt auch die Spalten mit Namen, die ich ersetzen möchte. Wie Sie sehen können, möchte ich jede dritte Spalte ändern, beginnend bei n = 1 (oder welche Spaltennummer ich auch immer beginnen möchte), und alle drei Spalten danach (n + 3) die Spalte in "pX ". Dasselbe gilt für "num_after_pipe" und "value". Alle von ihnen bis zu einem gewissen Punkt.
Ich arbeite mit dem folgenden Skript, um jeden Satz von drei Spalten umzubenennen.
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");
.....
Irgendwelche Vorschläge?
Danke!
Grüße,
AlphaLion662
DatentabelleSkripterstellungBetreff: Änderung des Namens jeder dritten (n+3) Spalte(n) mit spezifischem Namen; Über 100 SpaltenHallo @AlphaLion662 ,
Ist es das, wonach Sie gesucht haben? Denken Sie daran, ich weiß nicht, wie Sie die Spaltennamen ändern möchten, also habe ich nur Präfixe hinzugefügt.Sie können die Präfixe in den Variablen first, second und Third sehen.Die Spaltenumbenennung geschieht im Block unter dem Hinweis " Col-Namensänderung hier ".
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 ),
);
);
Betreff: Änderung des Namens jeder dritten (n+3) Spalte(n) mit spezifischem Namen; Über 100 SpaltenHallo StarfruitBob,
Nachdem ich eine Weile damit herumgespielt hatte, funktionierte dies für mich. Danke schön!
Betreff: Änderung des Namens jeder dritten (n+3) Spalte(n) mit spezifischem Namen; Über 100 SpaltenIn Ihrem Fall können Sie die Schleife auch in 3s erhöhen und drei Spalten gleichzeitig in einer Einzelschleife einstellen
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();
);
);
