当我将第一个点和最后一个点变量与数据一起使用时,我总是发现自己必须快速刷新按组处理,但是今天我看到了一些有趣的东西。
这是一个示例数据集:
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中是否隐式保留了变量?还是程序直到到达按组末尾才从不返回数据步骤的顶部?
我想让这个变量在没有保留的情况下进行迭代的机制感到困惑,因为我习惯于在需要时显式使用保留。
答案 0 :(得分:4)
使用 sum 语句时,变量将自动保留。除非定义了不同的初始值,否则它将被初始化为零。
sum语句的语法为:
variable + expression ;