保留声明和下划线

时间:2014-06-21 17:36:02

标签: sas

考虑以下数据集测试

  x y
  1 A
  2 A
  . A
  4 A
  . B
  . B
  7 B
  8 B

基本上我希望组中的缺失值被前一个值替换。但如果之前的值来自另一个组,则不要使用该值来替换当前值。

考虑以下代码:

proc sort data=testout=Sorted;
   by y;
   run;


    data Out2(drop=_x);
    set Sorted;
    by y;

    retain _x;
    if first.y then do;

    _x=x;
    end; else do;

    if missing(x) then do;
    x = _x;
    end; else do;
    _x = x;
    end;

    end;

    run;

x背后的下划线是什么意思(_x)?

2 个答案:

答案 0 :(得分:2)

使用下划线作为前缀是临时变量的一种相当常见的命名约定。就SAS而言,_x只是另一个变量 - _并没有任何特殊效果。但是,如果所有的临时变量(以及那些临时变量)都以下划线开头,那么在数据步骤结束时整理工作的工作量就会减少,因为您可以使用:通配符将它们全部放在一个中走。 e.g。

data example;
  set sashelp.class;
  _age = age;
  _sex = sex;
  drop _: ;
run;

答案 1 :(得分:1)

_x只是一个新变量。它可以很容易zlast_x。但是,读取代码的人可能会更清楚它与x有关;虽然我不知道任何类似于&#34的约定; _表示"的先前值,但它不是不合理的。