2015-06-14 63 views
0

我有一個帶有10個obs的文件。和不同的參數。我需要爲每個觀察添加一個「ID」的新變量 - 即數字1-10的列。 如何添加一個簡單等於obs列的變量? 我想過用一個循環來做這件事,定義一個空桶,運行在var上,每次給以前的觀察添加'1',但是,它看起來有點複雜。有沒有更好的方法來做到這一點?sas創建一個等於obs列的變量

回答

3

您可以使用數據步驟自動變量_n_。這是Data Step循環的迭代計數。

Data want; 
    set have; 
    ID = _n_; 
run; 
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是做行操作非常有幫助。

1

如果你選擇一個Proc SQL溶液,有兩種方法: 1.未記錄:

proc sql; 
    create table want as 
    select monotonic() as row, * 
     from sashelp.class 
    ; 
quit; 
  • 記載:

    ODS上市關閉; ods output sql_results = want;

    proc sql number; select * from sashelp.class; quit;

    ods上市;

  • +0

    謝謝!關於proc的SQL,也許你可以幫助我另一個問題 - http://stackoverflow.com/questions/30853017/sas-proc-sql-with-when-then-statements – user3581800

    相關問題