(SAS) Как подобрать даты с помощью идентификационных данных? - PullRequest
0 голосов
/ 15 ноября 2018

Я новичок в 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

Может ли кто-нибудь сделать это?

Спасибо за продвижение.

1 Ответ

0 голосов
/ 15 ноября 2018

Существует простой способ добиться этого с помощью 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;
...