加载并合并所有 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;
我在一个位置(文件夹)有多个 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;