【问题标题】:(SAS) How to pick up dates with ID-based data?(SAS) 如何使用基于 ID 的数据获取日期?
【发布时间】:2018-11-16 03:46:55
【问题描述】:

我是 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

有人可以这样做吗?

感谢您的提前。

【问题讨论】:

  • 我可以猜到哪里出了问题,但您需要显示您使用的代码,并且一些数据行恰好在您正在读取的文件中。
  • 根本不清楚这里的逻辑是什么。这只是一个翻转吗?为什么第二个 ID 缺少值?

标签: sas


【解决方案1】:

有一种简单的方法可以使用 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;

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2015-11-28
    • 2019-12-15
    • 2023-01-09
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多