加载并合并所有 SAS 数据集

load and combine all SAS dataset

我在一个位置(文件夹)有多个 SAS 数据集,有两列,SAS 数据集的名称似乎是 Diagnosis_

这里我想加载所有数据集并将它们组合在一起,如下所示,

示例数据集

File Location: C:\Users\xyz\Desktop\diagnosis\Diagnosis_<diagnosis_name>.sas7bdat

1. Dataset Name : Diagnosis_Diabetes.sas7bdat

2. Dataset Name : Diagnosis_Obesity.sas7bdat

Ouput which I expect like this

你能帮我解决这个问题吗?

您可以使用 SET 语句组合数据集。如果想要所有名称以常量前缀开头的数据集,您可以使用 : 通配符来制作名称列表。

首先创建一个 libref 来引用目录:

libname diag 'C:\Users\xyz\Desktop\diagnosis\';

然后合并数据集。如果原始数据集是按PersonID排序的,那么你可以添加一个BY语句,结果也会被排序。

data tall;
  set diag.diagnosis_: ;
  by person_id;
run;

如果想要生成那么大的数据集,您可以使用 PROC TRANSPOSE,但在那种情况下,您将需要一些额外的变量来实际转置。

data tall;
  set diag.diagnosis_: ;
  by person_id;
  present=1;
run;

proc transpose data=tall out=want(drop=_name_);
   by person_id;
   id diagnosis;
   var present;
run;