在do循环迭代SAS中创建变量

在do循环迭代SAS中创建变量,sas,iteration,base,do-loops,Sas,Iteration,Base,Do Loops,我是SAS的新手,我正在尝试拆分列并为拆分后的结果指定新名称。 我希望达到的目标:例如,我有一个AV专栏。我的代码需要将其拆分,并从_AV和to_AV调用两个新列。我尝试了多种选择,但通过创建新名称,仍然出现了问题。我如果有人能帮我,那就太好了 set work.transposed; array aresplit AV TD ER PT; do i=1 to 4; FROM&aresplit[i]= scan(aresplit[i],1,','); TO&aresplit[i]

我是SAS的新手,我正在尝试拆分列并为拆分后的结果指定新名称。 我希望达到的目标:例如,我有一个AV专栏。我的代码需要将其拆分,并从_AV和to_AV调用两个新列。我尝试了多种选择,但通过创建新名称,仍然出现了问题。我如果有人能帮我,那就太好了

set work.transposed;
array aresplit AV TD ER PT;
do i=1 to 4;
FROM&aresplit[i]= scan(aresplit[i],1,',');
TO&aresplit[i]= scan(aresplit[i],2,','); 
end;
run;```

要从_AV制作和从AV制作_AV,您可以使用如下代码:

FROM_AV = scan(AV,1,',');
TO_AV = scan(AV,2,','); 
如果您想使用数组为四个变量复制它,那么您需要三个数组。一个用于输入变量列表,两个用于输出变量列表。(或者out数组可以是二维的)


你似乎没有试图引用代码中的任何变量名。什么是宏变量areplit?它有什么价值?您试图引用的数组在哪里定义,其数组名称包含未定义宏变量的值?
array in AV TD ER PT;
array out1  FROM_AV FROM_TD FROM_ER FROM_PT;
array out2  TO_AV TO_TD TO_ER TO_PT;
do index=1 to dim(in);
   out1[index] = scan(in[index],1,',');
   out2[index] = scan(in[index],2,',');
end;