在SAS中使用变量名进行计算
我有一个SAS数据集,如下所示:在SAS中使用变量名进行计算,sas,Sas,我有一个SAS数据集,如下所示: var _12 _41 _17 12 . . . 41 . . . 17 . . . 因此,对于每个变量,都有一个名为_var的列 我想使用数组或宏用行和列的乘积填充所有缺少的值: _12 _41 _17 12 144 492 204 41 492 1681 697 17 204 697 289 你对如何处理这个问题有什么想法吗?我希望它是完全通用的,因此我不需要
var _12 _41 _17
12 . . .
41 . . .
17 . . .
因此,对于每个变量,都有一个名为_var的列
我想使用数组或宏用行和列的乘积填充所有缺少的值:
_12 _41 _17
12 144 492 204
41 492 1681 697
17 204 697 289
你对如何处理这个问题有什么想法吗?我希望它是完全通用的,因此我不需要知道列的名称,也不需要假设它们的顺序或值,只需要假设它们都是数字。由于除var之外的所有变量都以下划线开头,因此很容易在数组中引用它们。然后,您可以使用INPUT、COMPRESS和VNAME函数提取数字并在一行中执行计算!这是代码
data have;
input var _12 _41 _17;
cards;
12 . . .
41 . . .
17 . . .
;
run;
data want;
set have;
array nums{*} _: ;
do i=1 to dim(nums);
nums{i}=var*input(compress(vname(nums{i}),"_"),best12.);
end;
drop i;
run;
由于除var之外的所有变量都以下划线开头,因此很容易在数组中引用它们。然后,您可以使用INPUT、COMPRESS和VNAME函数提取数字并在一行中执行计算!这是代码
data have;
input var _12 _41 _17;
cards;
12 . . .
41 . . .
17 . . .
;
run;
data want;
set have;
array nums{*} _: ;
do i=1 to dim(nums);
nums{i}=var*input(compress(vname(nums{i}),"_"),best12.);
end;
drop i;
run;