首页 > 解决方案 > (SAS) 如何使用基于 ID 的数据获取日期?

问题描述

我是 SAS 新手,正在尝试编写一个简单的代码。

原始数据:

TableA
ID   |Date      |Type
1     20111111    A
2     20081014    C
3     20051126    A
...
100   20160421    B

从这个原始数据中,我想按类型获取日期。

喜欢以下

Result (only picking up A and B)
ID   | DateofA  | DateofB
1    | 20111111 |    
2    |          |    
3    | 20051126 |
...
100  |          | 20160421

有人可以这样做吗?

谢谢你的提前。

标签: sas

解决方案


使用 Proc Transpose 有一种简单的方法可以实现这一点。要获取日期,您需要按 Id 对数据集进行排序。然后通过 Id 转置数据集(保持固定)。Id 语句还用于使用 Type 创建列。以下是我使用的方法:

data inp;
input Id 3. Date yymmdd8. type $2.;
type=strip(type);
format date date9.;
datalines;
1  20111111 A
2  20081014 C
3  20051126 A
4  20031212 B
5  20041127 C
6  20010904 A
7  20010803 C
8  20000702 B
9  19990601 A
10 19980701 C
;
run;

proc sort data=inp; by Id; run;

proc transpose data=inp
               out=outp 
               NAME=Transposed_Col
               prefix=DATEOf;
            by Id;
            id type;
run;

推荐阅读