ID的SAS序列号

时间:2015-11-07 21:19:18

标签: sas

我有这样的数据集:

ID_no   |  Medication_type
1       |    type_1
1       |    type_2
2       |    type_1
3       |    type_2
3       |    type_3
3       |    type_4

我想把它转换成一套

ID_NO | Medication 1 | Medication2 | Medication 3
1     | type_1       | type 2      | 
2     | Type_1       |             | 
3     | Type_2       | Type_3      | Type_4

要做到这一点,我需要做一个proc转置,但我想我需要一个这样的序列号来实现:

ID_no |  Medication_type | Seq_NO
1     |  type_1          | 1
1     |  type_2          | 2
2     |  type_1          | 1
3     |  type_2          | 1
3     |  type_3          | 2
3     |  type_4          | 3

但不幸的是,我在sas中遇到麻烦。我试着这样做:

data want;
  set have;
  by ID_no;
  if first.ID_no then do;
    seq_no = 1;
    seq_no + 1;
  end;
run;

但它一直都很重要,我为什么不知所措?

1 个答案:

答案 0 :(得分:4)

您已经有一个用于分组的变量,您不需要另一个变量。

proc transpose data=have out=want prefix=medication_ ;
  by id_no;
  var medication_type;
run;

关于创建SEQ_NO变量的尝试,需要将sum语句移出IF块,以便为每次观察运行它。这样的事情。

data want;
  set have;
  by ID_no ;
  if first.ID_no then seq_no=0;
  seq_no+1;
run;