与
相似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是分开的,同样是第一个和后续的'
答案 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;