2013-08-05 40 views
0

我需要为week0-week187创建一个变量,并且做RBAR就是这样。数据是这样的:根据现有的列创建一个很长的新变量列表

ID WEEK

1月28日

我试图让week0 -week187变量,如果观察结果是给定的,则变量将为1或0 ñ一周,应该是这个样子

ID WEEK WEEK0 WEEK1 ... WEEK28 ... WEEK30 ... WEEK186 WEEK187

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

cooooooode foooooooormatting ...;) – Joe

回答

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; 

远远优于如果你需要这个“宽”将转的东西,所以你每有1行ID变量,我猜,这很容易做到。但是,无论你需要这种广泛的格式,可以轻松/更容易地完成而不会扩大。

+0

最终我要通过ID进行聚合。这样我可以对列进行总计以获得每周的频率。 – user2448666

+0

正确的,你可以很容易地做到这一点,而不需要这样做...一个数据集按ID /周将会更有效率。 – Joe

相关问题