SAS-按首个和最后一个点保留按组处理

时间:2019-07-09 20:17:47

标签: loops sas grouping

当我将第一个点和最后一个点变量与数据一起使用时,我总是发现自己必须快速刷新按组处理,但是今天我看到了一些有趣的东西。

这是一个示例数据集:

data DS1;
input ID1 ID2;
datalines;
1 100
1 200
1 300
2 400
3 500
3 500
4 600
;
run;

我通常使用按组保留和第一个或最后一个点变量来处理我的数据,如下所示:

data ByGroup1;
set DS1;
by ID1 ID2;

retain Count;

if first.ID1 then Count = 0;
Count + 1;

run;

但是,我正在阅读SAS.com的帖子,其中一个人使用以下方法(没有保留语句)。

data ByGroup2;
set DS1;
by ID1 ID2;

if first.ID1 then Count = 0;
Count + 1;

run;

两个方法都返回相同的数据集:

ID1 ID2 Count
1   100 1
1   200 2
1   300 3
2   400 1
3   500 1
3   500 2
4   600 1

通过组处理进行操作时,PDV中是否隐式保留了变量?还是程序直到到达按组末尾才从不返回数据步骤的顶部?

我想让这个变量在没有保留的情况下进行迭代的机制感到困惑,因为我习惯于在需要时显式使用保留。

1 个答案:

答案 0 :(得分:4)

使用 sum 语句时,变量将自动保留。除非定义了不同的初始值,否则它将被初始化为零。

sum语句的语法为:

variable + expression ;