Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/sorting/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Sorting SAS数据集-为变量中的每个更改分配增量值-按时间戳排序_Sorting_Sas - Fatal编程技术网

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

Sorting SAS数据集-为变量中的每个更改分配增量值-按时间戳排序,sorting,sas,Sorting,Sas,近似 我的数据集按ID排序,然后按时间戳排序。我需要创建一个“order”变量,随着状态的每次更改而递增,但我的排序必须保持时间戳,因此我认为我正确地建议by(group)不起作用。下面的订单字段说明了我所寻求的 ID Status Timestamp Order 188 3 12:15 1 188 4 12:45 2 188 4 13:10 2 188 3 14:20 3

近似

我的数据集按ID排序,然后按时间戳排序。我需要创建一个“order”变量,随着状态的每次更改而递增,但我的排序必须保持时间戳,因此我认为我正确地建议by(group)不起作用。下面的订单字段说明了我所寻求的

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'是分开的,同样的,第一个和随后的'10'也是分开的。

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

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;

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

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

好极了非常感谢。