0

我需要为 week0-week187 创建一个变量,而 RBAR 就是这样。数据看起来像:

身份证周

1 0

1 28

1 186

2 187

2 30

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

ID 周 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代码是首选

4

1 回答 1

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 行,我猜,这也很容易做到。但是,您需要这种宽格式的任何可能性都可以轻松/更轻松地完成,而无需扩大。

于 2013-08-05T15:51:25.330 回答