【问题标题】:Use variable name for calculation in SAS在 SAS 中使用变量名进行计算
【发布时间】:2012-03-14 13:29:03
【问题描述】:

我有一个如下所示的 SAS 数据集:

var  _12  _41  _17
12      .   .   .
41      .   .   .
17      .   .   .

因此,对于每个 var,都有一个名为 _var 的列。

我想使用一个数组或宏来用行和列的乘积填充所有缺失值:

     _12  _41  _17
12  144   492  204
41  492  1681  697
17  204   697  289

关于如何解决这个问题的任何想法?我希望它是完全通用的,所以我不需要知道列的名称,也不需要对它们的顺序或值做任何假设,除了它们都是数字。

【问题讨论】:

    标签: sas


    【解决方案1】:

    由于所有变量(除了 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;
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多