重置永久数据的世代号

时间:2017-10-05 06:08:03

标签: sas data-management

Goo day,

我正在关注从第10代开始的永久文件系列:

file#010
file#011
file#012
....
file#062 
file /*the latest one*/

这是由于一些清理工作,其中1-9代被认为有错误的数据并被删除。

我想重新生成该系列,以便第一代产生#001,#002等等:

file#001
file#002
file#003
....
file#052 
file /*the latest one*/

我唯一能想到的方法是将整个系列保存到另一个名称,删除旧数据并重新保存。这似乎很愚蠢,并且潜在的 -ooops - 损害风险太高。有关如何重新生成世代数的任何想法?

1 个答案:

答案 0 :(得分:0)

如果您要问的是如何使用SAS重命名这些文件,那么应该这样做(假设您的环境允许X命令):

%let dir=<path_to_your_folder>;
filename fn pipe "dir /b &dir.\file#*";
data _null_;
infile fn;
input;
rc=rename(cats("&dir.\",_infile_),cats("&dir.\file#",put(_N_,z3.)),'file');
run;

您只能使用SAS功能

%let dir=<path_to_your_folder>;
data _null_;
  filename root "&dir";
  did=dopen('root');
  numfiles=dnum(did);
  n=10;
  do i=1 to numfiles;
    physname=dread(did,i);
    if prxmatch('/^file#\d\d\d/',physname) then do;
      rc=rename(cats("&dir.\",physname),cats("&dir.\file#",put(n,z3.)),'file');
      n+1;
    end;
  end;
  rc=close(did);
run;