所以我的数据看起来像这样
OBS _Seq_
1 15
2 16
3 20
4 22
我想要一个具有 Seq 完整序列的新数据集。所以像这样:
OBS _Seq_
1 15
2 16
3 17
4 18
5 19
6 20
7 21
8 22
我试过了。
data _null_;
set data;
%let minSeq = min(_Seq_);
%let maxSeq = max(_Seq_);
run;
data newSeq;
do sequence = &minSeq to &maxSeq;
output;
end;
run;
答案 0 :(得分:1)
为了将数据步长值分配给宏变量,您需要使用call symput
。读取第一行时_n_=1
为真,而eof
(由end=
语句中的set
选项初始化)表示数据集的最后一行。因此,假设您的数据按_seq_
排序:
data _null_;
set data end=eof;
if _n_=1 then call symput('minSeq',put(_Seq_,20.));
if eof then call symput('maxSeq',put(_Seq_,20.));
run;