按SAS组添加序号

按SAS组添加序号,sas,Sas,我需要按组分配序号。我曾尝试使用seq number,但一组1、2、3等获得了它。然而,我需要两组。如下例所示: 拥有: 想要: 如果对数据进行排序,则非常简单: proc sort data=sashelp.class out=class; by sex age; run; data class; set class; by sex age; if first.sex then seqn = 0; if first.age t

我需要按组分配序号。我曾尝试使用seq number,但一组1、2、3等获得了它。然而,我需要两组。如下例所示:

拥有:

想要:


如果对数据进行排序,则非常简单:

proc sort data=sashelp.class out=class;
    by sex age;
run;

data class;
    set class;
    by sex age;

    if first.sex then
        seqn = 0;   

    if first.age then
        seqn + 1;
run;

请将您的示例数据以文本形式发布,而不是以图像形式发布。无法确定如何将其作为图片中的文本输入。以下是数据:101 aaa 202 101 aaa 202 101 bbb 203 101 ccc 206 101 ddd 207 102 aaa 222 102 aaa 222 102 bbb223@Sammy请在此处查看任意数量的其他SAS问题。请编辑您的问题以添加数据,而不是在注释中。您将丢失注释中的所有格式。我把它加进去,用了不到10分钟。如果你不愿意花那么多时间来格式化你的数据,我们为什么要回答你的问题?谢谢罗伯特,我试过了你的例子。然而,它是连续的。我需要在下一组中再次从1开始。i、 e。Var1-102应该以1开头,而不是从前面的序号开始的连续数字。在您的示例中,Sex=M应该再次以1开头。@Sammy这就是by group的作用。现在它在添加第二个by group之后工作。谢谢。
Obs var1 var2 var3 seq
1   101 aaa 202 1
2   101 aaa 202 1
3   101 bbb 203 2
4   101 ccc 206 3
5   101 ddd 207 4
6   102 aaa 222 1
7   102 aaa 222 1
8   102 bbb 223 2
proc sort data=sashelp.class out=class;
    by sex age;
run;

data class;
    set class;
    by sex age;

    if first.sex then
        seqn = 0;   

    if first.age then
        seqn + 1;
run;