繁体   English   中英

如何根据ID变量sas中的条件标记或分离数据

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM