SAS SET语句使用冒号并创建文件名变量



因此,使用SAS,我有许多SAS月端数据集称为以下内容:

mydata_201501
mydata_201602
mydata_201603
mydata_201604
mydata_201605
...
mydata_201612

每个人都有特定月末的帐户信息。我想使用Colon将数据集全部堆叠到一个数据集中,而不是按以下方式写出完整的语句:

data mynewdata;
set mydata_:;
run;

但是,数据集中没有Datestamp变量,因此当我堆叠它们时,我将丢失每个帐户的月端信息。我想知道哪个行是指每个帐户的哪个月末。有什么方法我可以自动创建一个变量,该变量名称该行来自表。例如,长期缠绕的方法是:

data mynewdata;
set mydata_201501 (in=a) mydata_201502 (in=b) mydata_201503 (in=c)...;
if a then tablename = 'mydata_201501';
if b then tablename = 'mydata_201502';
if c...
run;

但是,在这些线上使用结肠有更快的方法吗?

data mynewdata;
set mydata_:;
tablename = _tablelabel_;
run;

谢谢

我总是会发现单击评论链接令人讨厌,因此希望这是您上下文中的答案。使用INDSNAME= SET语句选项将数据集名称分配给变量:

data mynewdata;
  set mydata_: indsname=_tablelabel_;
  tablename = _tablelabel_;
run;

n.b。您可以随心所欲地调用_tablelabel_,并且您可能希望更改它,以免像SAS生成的变量名称那样 Look

INDSNAME=仅成为版本9.2

中的SAS SET语句选项

只是为了清楚,使用我的特定代码,数据集被命名为mydata_yyyymm,我希望使用Datestamp使用一个月的变量,我能够使用MJSQU提供的解决方案,(如果需要,请遵守并保留声明):

data mynewdata;
  set mydata_: (obs=100 keep=xxx xxx) indsname=_tablelabel_;
  format monthend yymmdd10.;
  monthend = input(scan(_tablelabel_,-1,'_'),yymmn6.);
run;

相关内容

  • 没有找到相关文章