SAS数据集 - 为变量中的每个更改分配增量值 - 按时间戳排序

时间:2016-07-01 16:29:36

标签: sorting sas

相似

How to assign an ID to a group of variables

我的数据集按ID排序,然后按时间戳排序。我需要创建一个'命令'变量,在每次更改时递增,比如说状态,但我的排序必须保留时间戳,所以我认为我建议BY(组)不起作用是正确的。下面的订单字段说明了我所寻求的......

ID   Status  Timestamp  Order  
188    3     12:15      1  
188    4     12:45      2  
188    4     13:10      2  
188    3     14:20      3  
189   10     11:00      1  
189   11     13:00      2  
189   10     13:30      3  
189   10     13:35      3  

第一个和第二个 3是分开的,同样是第一个和后续的'

2 个答案:

答案 0 :(得分:1)

您可以使用NOTSORTED选项让SAS自动为您设置FIRST.STATUS标记。

 data want ;
   set have ;
   by id status notsorted;
   if first.id then order=0;
   order + first.status;
 run;

答案 1 :(得分:0)

正如您所提到的,它与其他问题非常相似。这里的技巧是将每个组中第一个观察的顺序设置为零。

data temp;
    input ID $ Status $ Timestamp $;
    datalines;
    188 3 12:15
    188 4 12:45
    188 4 13:10
    188 3 14:20
    189 10 11:00
    189 11 13:00
    189 10 13:30
    189 10 13:35
    ;
run;

data temp2;
    set temp;
    by id;
        if first.id then order = 0;
        if status ~= lag(status) then order + 1;
run;