我有一个SAS数据集,包含以下变量:ID,Var1_0,Var1_3,Var1_6,Var2_0,Var2_3,Var2_6,可以这样读取:Var1_0在时间0是参数1.对于每个主题,我有2个变量和3个时间点。我想使用数组将其转换为长格式,我这样做了:
data long;
set wide;
array a Var1_0 Var1_3 Var1_6 Var2_0 Var_3 Var_6;
Do i=1 to dim(a);
outcome = a[i];
*Var = ???;
if (mod(i,3)=1) then Time = 0;
else if (mod(i,3)=2) then Time = 3;
else Time = 6;
Output;
end;
keep ID Outcome Time;
run;
问题在于我不知道如何计算参数变量,即我想添加1或2的变量,具体取决于与该值相关的参数。有没有更好的方法呢?谢谢!
答案 0 :(得分:0)
Reeza在评论中给出了答案。这里输入了。
data long;
set wide;
array a[*] Var1_0 Var1_3 Var1_6 Var2_0 Var2_3 Var2_6;
do i=1 to dim(a);
outcome = a[i];
var = vname(a[i]);
time = input(scan(var,2,'_'),best.);
/*Other stuff you want to do*/
output;
end;
run;
VNAME(array[sub])
为您提供array [sub]引用的变量的变量名。
scan(str,i,delim)
使用指定的分隔符在str
中为您提供第i个单词。