比较id的数据

时间:2016-12-13 10:17:05

标签: python sas

如果ID中的变量页面和步骤相同,我想按ID进行分组。

实施例: enter image description here

所以在这里你可以看到id 2(原始白色)和4(绿色)具有完全相同的页面和步骤。

示例2 - 在这里您还可以看到我想要的id_group变量: enter image description here '

正如您所见,组id_group 11和12正在为两个在页面和步骤变量中具有相同功能的组提供。

问题是 - 如果页面和步骤变量的组在id中是相同的,我如何动态分配相同的“组”ID?

这在SAS中是否可行?如果在SAS中不可能。 Python可以做到。

1 个答案:

答案 0 :(得分:1)

在SAS中,您可以使用所谓的双DOW循环(如果您想了解更多信息,请使用Google)。这将循环遍历源表两次,第一次确定哪些ID具有相同的PAGE和STEP值,并设置GROUP_ID标志。第二次将GROUP_ID分配给具有该ID的所有记录。

data have;
input page step id;
datalines;
1 1 1
1 2 1
2 3 1
3 4 1
1 1 2
2 2 2
3 3 2
5 1 3
6 2 3
1 1 4
2 2 4
3 3 4
;
run;

data want;
do until(last.id);
set have;
by id;
if first.id then do; /* reset counts when id changes */
    _count=0;
    _same=0;
    end;
_count+1;  /* count number of records per id*/
_same+(page=step); /* count number of times page = step */
if last.id and _count=_same then do;
    _flag+1; /* if count = same then increment _flag by 1 */
    group_id=_flag; 
    end;
drop _: ; /* drop temporary variables */
end;
do until(last.id);
set have;
by id;
output; 
end;
run;