sas创建一个等于obs列的变量

时间:2015-06-14 19:06:19

标签: sas

我有一个10个文件的文件。和不同的参数。我需要为每个观察点添加一个新的“ID”变量,即数字1-10的列。 如何添加一个简单等于obs列的变量? 我想过用一个循环来做,定义一个空的大桶,在var上运行,每次在前面的观察中添加'1',但是,它看起来有点复杂。有没有更好的方法呢?

3 个答案:

答案 0 :(得分:3)

您可以使用数据步骤自动变量_n_。这是数据步骤循环的迭代计数。

Data want;
   set have;
   ID = _n_;
run;

答案 1 :(得分:1)

如果您选择Proc SQL解决方案,有两种方法: 1.无证:

proc sql;
  create table want as
    select monotonic() as row, *
      from sashelp.class
  ;
quit;
  1. 记载:

    ods上市关闭; ods输出sql_results = want;

    proc sql number;     select * from sashelp.class; 退出;

    ods listing;

答案 2 :(得分:0)

@DomPazz答案肯定会奏效!如果您想根据属性返回观察数量,请尝试:

proc sort data= dataset out= sort_data;
    by * your attribute(s) *;

data sort_data;
set sort_data;
by * your attribute(s) that is listed in above proc sort statement *;
if first.attribute then i=1; <=== first by group observation, number =1
i + 1; <==== sum statement (retaining)
if last.attribute and .... then ....; <=== whatever you want to do . Not necessary
run;

first / Last在执行行操作时非常有用。