根据现有列创建一长串新变量

时间:2013-08-05 15:42:13

标签: sas proc-sql

我需要为week0-week187创建一个变量,并且正在做那个RBAR。数据看起来像:

ID WEEK

1 0

1 28

1 186

2 187

2 30

如果观察在给定的一周内,我试图让week0-week187变量为1或0,应该看起来像这样

周刊ID周...周末......周末......周末......周末18周

1 0 1 0 ... 0 ... 0 ... 0 0

1 28 0 0 ... 1 ... 0 ... 0 0

1 186 0 0 ... 0 ... 0 ... 1 0

2 187 0 0 ... 0 ... 0 ... 0 1

2 30 0 0 ... 0 ... 1 ... 0 0

也许DO声明是必要的?大部分时间proc sql导致SAS崩溃,因为我的计算机是垃圾。首选SAS代码

1 个答案:

答案 0 :(得分:1)

在说明“不要这样做”之后,这里是如何:

data have;
week=5;
run;

data want;
set have;
array weeks week0-week187;
do _t = 1 to dim(weeks);
 weeks[_t]=0;
end;
weeks[week+1]=1;
run;

如果你需要这个“宽”的话,更好的方法就是转换东西,这样每个ID变量就有1行,我猜,这也很容易。但是,无论你需要什么,这种宽幅格式都可以轻松/轻松地完成而不需要加宽。