【发布时间】:2023-04-04 00:15:02
【问题描述】:
当我对数据使用第一个点和最后一个点变量时,我总是发现自己必须快速刷新按组处理,但今天我看到了一些有趣的东西。
这是一个示例数据集:
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 中?或者,是不是程序在到达按组的末尾之前永远不会返回到数据步的顶部?
我想我对这个变量在没有保留的情况下如何迭代的机制感到困惑,因为我习惯于在需要时显式使用保留。
【问题讨论】:
-
显式保留与隐式保留。