如果ID中的变量页面和步骤相同,我想按ID进行分组。
所以在这里你可以看到id 2(原始白色)和4(绿色)具有完全相同的页面和步骤。
示例2 - 在这里您还可以看到我想要的id_group变量: '
正如您所见,组id_group 11和12正在为两个在页面和步骤变量中具有相同功能的组提供。
问题是 - 如果页面和步骤变量的组在id中是相同的,我如何动态分配相同的“组”ID?
这在SAS中是否可行?如果在SAS中不可能。 Python可以做到。
答案 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;