我有两个关于 SAS 中的 Do Loops 的问题。假设我有三个数据集:(1)一个数据集,称为last
一个观察值,称为last_observation
:
last_observation
150
(2) 具有两列观察的第二个数据集:
Time ID
34200 1
34201 2
34210 3
34213 4
. .
. .
. .
36000 150
请注意,我的时间增量随机增加并且有 925 个观察值。在我的 1X1 数据集中找到相同的数字 (1)。
(3) 第三个数据集have
有两列观察:
Purchases_unit Time
1000 34200
2000 34210
1243 34211
3040 34300
. .
. .
1000 36000
我想要做的是以下内容:
data _null_;
set last;
where last=last;
call symput('last_obs',last);run;
%Do i=1 to &'last_obs'; *Hence a loop for 1 to 150 IDs
data want_&i;
set have;
if time<time(i) then delete;
run;
%end;
%mend;
time(i)
指的是第二个数据集中的时间列,(i)是时间列的单元格下标。所以我的两个问题是:
(1)这行得通吗?:%Do i=1 to &'last_obs';
如果我使用该symput
功能?(2) 如何实现time(i)
索引?