更改具有特定名稱的每三 (n+3) 列的名稱; 100 多列大家好,
我正在嘗試命名一堆列,其中有 100 多個。 我一直在做一堆文本到列的事情,並且有很多組三列我想給它們起相同的名字。 見下文:

上面顯示了帶有我想要的名稱的列,在紅線的左側。 它還顯示了帶有我要替換的名稱的列。 如您所見,我想更改每三列,從 n=1(或我想要開始的任何列號)開始,之後每三列 (n+3),將該列重命名為“pX ”。 “num_after_pipe”和“value”也是如此。 所有這些都達到了一定程度。
我正在使用以下腳本重命名每組三列”
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");
.....
有什麼建議麼?
謝謝!
問候,
AlphaLion662
數據表腳本回复:使用特定名稱更改每三 (n+3) 列的名稱; 100 多列你好@AlphaLion662 ,
這是你要找的嗎? 請記住,我不知道你想如何修改列名,所以我只是添加了前綴。您可以看到變量 first、second 和 third 中的前綴。列重命名發生在註釋“下的塊中此處更改上校名稱”。
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 ),
);
);
回复:使用特定名稱更改每三 (n+3) 列的名稱; 100 多列嘿楊桃鮑勃,
在擺弄了一段時間之後,這對我有用。 謝謝你!
回复:使用特定名稱更改每三 (n+3) 列的名稱; 100 多列在您的情況下,您還可以在 3 秒內增加循環並在單個循環中同時設置三列
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();
);
);
