[英]How to flag or separate data based on a condition within an ID variable sas
我想在一个ID变量中选择相互之间10%的值。 例如,我的数据如下所示:
ID Var1
001 100
001 109
001 200
001 210
001 220
001 300
001 310
002 500
002 510
我想要的输出是某种方式进行标记,以便可以将其分为几组:
ID Var1 Flag
001 100 1
001 109 1
001 200 2
001 210 2
001 220 2
001 300 3
001 310 3
002 500 1
002 510 1
我尝试使用滞后函数并标记数据,但它仅标记一对中的第二行; 我无法将两个值都拉到彼此之间的10%之内。
标记之间的差异是否在10%以内的方法如下。 您可以通过将数字除以1,然后取绝对值来确定10%的比率。 假定您的数据按ID和var1值升序排序。
data want;
set have;
by ID;
retain group;
lagv1=lag(var1);
if first.id then do;
lagv1=.;
group=1;
end;
else do;
diff = abs(var1/lagv1-1);
if diff >0.1 then group+1;
end;
run;
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.