SAS笔记 利用数组重构SAS数据集

Posted Jensen Zhang

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了SAS笔记 利用数组重构SAS数据集相关的知识,希望对你有一定的参考价值。

在实际应用中,我们经常会把宽数据(一个患者一条观测)转化为长数据(一个患者多条观测)或者将长数据(一个患者多条观测)转换为宽数据(一个患者一条观测),在R中我们可以利用Reshape2包来实现。在SAS中有两种实现方法:数组和TRANSPOSE。这一篇博文先讲解利用数组重构SAS数据,下一篇博文将介绍利用TRANSPOSE函数重构SAS数据。

1.宽数据变长数据

***创建数据集
DATA DIAGNOSE;
   INPUT @1  PATNO    2.
         @3  DATE     MMDDYY10. 
         @14 DX1 - DX3;
   FORMAT DATE MMDDYY10.;
DATALINES;
10/21/1999 1 2 .
10/29/1999 2 . .
11/11/2000 3 . .
01/01/2000 1 2 3
02/02/2000 3 2 .
03/15/2000 4 . .
;

***将宽数据转化为长数据,不利用数组
DATA NEW_DX;
   SET DIAGNOSE (DROP = DATE);

   DX = DX1;
   IF DX NE . THEN OUTPUT;
   DX = DX2;
   IF DX NE . THEN OUTPUT;
   DX = DX3;
   IF DX NE . THEN OUTPUT;

   KEEP PATNO DX;
RUN;

***将宽数据转化为长数据,利用数组
DATA NEW_DX;
   SET DIAGNOSE (DROP = DATE);
   ARRAY DXARRAY[3] DX1 - DX3;

   DO I = 1 TO 3;
      DX = DXARRAY[I];
      IF DX NE . THEN OUTPUT;
   END;

   KEEP PATNO DX;
RUN;

2.将长数据转化为宽数据

参考资料:《Longitudinal Data and SAS: A Programmer‘s Guide》

以上是关于SAS笔记 利用数组重构SAS数据集的主要内容,如果未能解决你的问题,请参考以下文章

《SAS编程与数据挖掘商业案例》学习笔记之十二

sas如何写赋值循环

第二章 导入数据到SAS | 逻辑库和SAS数据集

如何使用 SAS 删除包含 SAS 数据集的外部文件夹

在宏内部使用变量内部数据集名称时,SAS语法错误22和200

SAS数据的对比和清洗