【问题标题】:Creating variables in do loop iteration SAS在 do 循环迭代 SAS 中创建变量
【发布时间】:2019-12-21 11:12:15
【问题描述】:

我是 SAS 新手,我正在尝试拆分列并为拆分结果赋予新名称。 我希望实现的目标:例如我有一个 AV 专栏。我的代码需要拆分它并调用两个新列 FROM_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;```

【问题讨论】:

  • 你似乎没有试图在该代码中引用任何这些变量名。什么是宏变量 ARESPLIT?它有什么价值?您尝试引用的数组在哪里定义,其数组名称包含未定义的宏变量的值?

标签: sas iteration base do-loops


【解决方案1】:

要从 AV 生成 FROM_AV 和 TO_AV,您可以使用如下代码:

FROM_AV = scan(AV,1,',');
TO_AV = scan(AV,2,','); 

如果您想使用数组复制四个变量,那么您需要三个数组。一个用于输入变量列表,两个用于输出变量列表。 (或者输出数组可以是二维的)。

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;

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2014-11-11
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-12-26
    • 1970-01-01
    相关资源
    最近更新 更多