我有一个SAS数据集,如下所示:
var _12 _41 _17
12 . . .
41 . . .
17 . . .
Run Code Online (Sandbox Code Playgroud)
所以每个var都有一个名为的列_var.
我想使用数组或宏来使用行和列的乘积填充所有缺少的值:
_12 _41 _17
12 144 492 204
41 492 1681 697
17 204 697 289
Run Code Online (Sandbox Code Playgroud)
有关如何处理此问题的任何想法?我希望它完全是通用的,所以我不需要知道列的名称,也不需要对它们的顺序或值做任何假设,除了它们都是数字.
由于所有变量(除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;
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
261 次 |
| 最近记录: |