重命名SAS中的关键变量后,索引文件会更新吗?

Will Index file be updated after renaming the key variable in SAS?

根据Understanding SAS Indexes

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

但是,我自己试了一下,重命名key变量后index文件就消失了,请问是哪里出了问题?

这是我使用的代码:

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重命名后,索引消失

非常感谢!

使用 MODIFY 而不是 SET。

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;