也许是一个愚蠢的问题...... 我得到了以下数据集:
id count
x 1
y 2
z 3
a 1
b 2
c 3
etc.
我想要这个:
id count group
x 1 1
y 2 1
z 3 1
a 1 2
b 2 2
c 3 2
etc.
以下是我的尝试:
data macro_1; set vix.macro_spy; where macro=1;
count+1;
if count>3 then do;
count=1;
end;
group=0;
if count=1 then group+1;
run;
但它不起作用。如果我曾经获得'count = 1',如何将所有'group'添加一个? 感谢。
答案 0 :(得分:5)
更简单
data want;
set vix.macro_spy;
group+(count=1);
run;
答案 1 :(得分:0)
我不确定我理解你需要什么。因此,您对此数据集进行了排序,以便变量count
的值始终为1, 2, 3, 1, 2, 3, 1, 2, 3...
现在,您想要生成变量group
,以便每次变量count
超过3时值都会递增?
如果是这样,你可以这样做:
data group;
set vix.macro_spy;
retain group;
if _N_ = 1 then group = 0;
if count = 1 then group + 1;
run;
这是我正在使用的一般模式。
if _N_ = 1
部分只执行一次,这是初始化变量的地方。
retain
语句确保变量将从DATA步骤的一次迭代到下一次迭代保留其值。