Indexing 在SAS中重命名键变量后是否会更新索引文件?

Indexing 在SAS中重命名键变量后是否会更新索引文件?,indexing,sas,rename,datastep,Indexing,Sas,Rename,Datastep,据 如果在SAS中重命名键变量,则简单索引将被重命名,而不是被删除 但是,当我自己尝试这一点时,在重命名键变量后,索引文件将消失,我想知道是什么问题 以下是我使用的代码: data work.temp(index=(id)); input id $ amount; cards; p 52 p 45 a 13 a 56 r 34 r 12 r 78 ; proc contents data=work.temp; r

如果在SAS中重命名键变量,则简单索引将被重命名,而不是被删除

但是,当我自己尝试这一点时,在重命名键变量后,索引文件将消失,我想知道是什么问题

以下是我使用的代码:

data work.temp(index=(id));
input id $ amount;
cards;
p       52
p       45
a       13
a       56
r       34
r       12
r       78
;
proc contents data=work.temp;
run;

data WORK.temp ;
set WORK.temp (keep=Id amount rename=(Id=Id_Code));
run;

proc contents data=work.temp;
run;
从结果可以看出,重命名键变量Id后,索引消失


多谢各位

使用修改而不是设置

DATA temp;
  MODIFY temp (RENAME=id=id_code);
RUN;

即使不重命名变量,它也会消失

data temp;
set temp;
run;
这也会破坏索引。原因是数据步骤正在用新数据集替换原始数据集。有关索引的所有信息都将在该替换中丢失

相反,使用
PROC DATASETS
就地修改数据集:

proc datasets lib=work nolist;
modify temp;
rename id=id_code;
run;
quit;

这不管用。Modify不支持重命名,将忽略该重命名。至少在我的版本上没有。你是对的。我不知道修改仅限于数据步骤。奇怪的是,在运行时没有给出任何注释、警告或错误。@DomPazz重命名数据集选项不会被忽略,PDV包含重命名的变量。您可以使用PUT u ALL\uz;Id\u Code=p amount=52\u ERROR\u0\u IORC\u0\u N\u1这不会像您所说的那样更改TEMP中的名称。非常感谢!这真的解决了我的问题!