我正在使用 SAS,我想创建一个指示变量。
我拥有的数据是这样的(DATA I HAVE):
我想将其更改为(我想要的数据):
我想要使用固定数量的总时间,并且开始时间具有重复的时间值(在本例中,c1 和 c2 都在时间 3 开始)。虽然我使用的示例很小,有 5 个名称和 12 个时间值,但实际数据非常大(大约 40,000 个名称和 100,000 个时间值 - 所以我想要的结果是一个 100,000x40,000 的矩阵。)
有人可以提供有关如何处理此问题的任何提示/解决方案吗?
最佳答案
40k 变量很多。看看它的扩展效果会很有趣。如何确定停止时间?
data have;
input starttime name :$32.;
retain one 1;
cards;
1 varx
3 c1
3 c2
5 c3x
10 c4
11 c5
;;;;
run;
proc print;
run;
proc transpose data=have out=have2(drop=_name_ rename=(starttime=time));
by starttime;
id name;
var one;
run;
data time;
if 0 then set have2(drop=time);
array _n[*] _all_;
retain _n 0;
do time=.,1 to 12;
output;
call missing(of _n[*]);
end;
run;
data want0 / view=want0;
merge time have2;
by time;
retain dummy '1';
run;
data want;
length time 8;
update want0(obs=0) want0;
by dummy;
if not missing(time);
output;
drop dummy;
run;
proc print;
run;
关于SAS - 创建指标变量,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52000275/