SAS の Do ループに関して 2 つの質問があります。3 つのデータセットがあるとします: (1) と呼ばれるlast
1 つの観測値で呼び出される 1 つのデータセットlast_observation
:
last_observation
150
(2) 観測の 2 つの列を持つ 2 番目のデータセット:
Time ID
34200 1
34201 2
34210 3
34213 4
. .
. .
. .
36000 150
時間の増分がランダムに増加し、観測値が 925 になっていることに注目してください。私の 1X1 データセット (1) にあるのと同じ数です。
(3) have
2 列の観測値を含む 3 番目のデータセット:
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)
2 番目のデータセットの時間列を参照し、(i) は時間列のセル添字です。だから私の2つの質問は次のとおりです。
(1) これは機能しますか?:関数%Do i=1 to &'last_obs';
を使用すると? (2)インデックスsymput
を実装するにはどうすればよいですか?time(i)