SAS导入多个数据集以将数据集名称另存为变量

SAS导入多个数据集以将数据集名称另存为变量,sas,dataset,Sas,Dataset,我需要访问一个包含一些sas数据集的目录,这些数据集名为all_ci、all_pd、all_vs等。ci将是“护理信息”,pd将是“患者数据”,vs将是“重要统计数据”。我正在这样读取它们: data ci_all; set DIRECTORY.all:; run; 我得到一张像这样的桌子: No. 16 25 20 Category No. Patient Data 16 Vital Statistics 25 Care Info 20

我需要访问一个包含一些sas数据集的目录,这些数据集名为all_ci、all_pd、all_vs等。ci将是“护理信息”,pd将是“患者数据”,vs将是“重要统计数据”。我正在这样读取它们:

data ci_all;
set DIRECTORY.all:; run;
我得到一张像这样的桌子:

No.  
16
25
20
Category          No.
Patient Data      16
Vital Statistics  25
Care Info         20
这仅适用于设置以all开头的所有集合。问题是我需要一个如下所示的输出:

No.  
16
25
20
Category          No.
Patient Data      16
Vital Statistics  25
Care Info         20

由于原始的all_uu数据集没有类别标签,我必须手动计算读取all_uuu数据集的顺序,然后对其进行标记。我想知道是否有一种方法可以保存正在读取的数据集的名称,以便更容易地在行中标记它们。

在SET语句上使用INDSNAME选项。您需要将该值复制到新变量,因为dataset选项中引用的变量会自动删除

libname DIRECT 'mydirectory' ;
data ci_all;
  lenght dsname indsname $41 ;
  set DIRECT.all: indsname=indsname;
  dsname=indsname;
run;

这正是我想要的,这为我节省了很多时间。请注意它适用于(9.3+)的版本。