更改具有特定名称的每三 (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();
);
);
