【问题标题】:load and combine all SAS dataset加载并合并所有 SAS 数据集
【发布时间】:2021-06-03 03:33:17
【问题描述】:

我在单个位置(文件夹)中有多个 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

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

【问题讨论】:

  • 你尝试了什么?
  • 我有 200 多个 sas 数据集。我想加载所有 200 个数据集并尝试组合所有 ID 并针对每个 ID 创建标志。这样我就可以知道我有多少用户以及他们的诊断是什么。

标签: sas sas-macro


【解决方案1】:

您可以使用 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;

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2017-03-26
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-05-04
    • 2020-12-10
    • 2019-03-31
    • 1970-01-01
    相关资源
    最近更新 更多