2009-02-26 56 views
0

我正在基础SAS 8.1(OpenVMS)中生成报告。我需要它有每个观察1页...类似于下面。我找不到任何显示如何使用PROC PRINT或PROC REPORT执行此操作的任何内容。除了PUT语句之外,还有什么办法可以做到吗?不幸的是,升级或添加模块不是一种选择。任何帮助表示赞赏。在基础SAS中生成非表格布局的报告

头文本观察ID 1

第1个文字----------------变量1

第2行文字--------- -------可变2

第3行文字----------------可变3

--page渡假 -

头文本观察ID 2

Line 1 text ---------------- variable 1

Line 2 text ---------------- variable 2

3行文字----------------变3

--page突破 -

回答

5

如果通过观察转数数据集,然后proc report能处理它没有问题。心连心。

/* test data -- each obs is identified by obsId */ 
data class; 
    set sashelp.class; 
    obsId = _n_; 
run; 

/* transpose the data */ 
proc transpose 
    data=class 
    out=report(rename=(_name_=var col1=value)); 
    var _all_; 
    by obsId; 
run; 

/* change the varaible name into "Line 1 text ..." */ 
data report; 
    drop line cLine dashes; 
    length var cLine $30; 
    dashes = repeat("-", 20-1); 
    /* usual DoW */ 
    do line = 1 by 1 until (last.obsId); 
    set report; 
    by obsId; 
    cLine = put(line, best.-l); 
    var = "Line "||trim(cline)||" text "||dashes; 
    output; 
    end; 
run; 

/* print out one obs per page */ 
options nocenter; 
proc report data=report nowd; 
    column obsId var value; 
    define obsId/" " group noprint; 
    define var/" " display left; 
    define value/" " display left; 
    break after obsId/page; 
    compute before obsId; 
    id = put(obsId, best.-l); 
    len = length(id); 
    line @2 "Header Text Observation Id " iD $varying. len; 
    line " "; 
    endcomp; 
run; 

/* on lst, in part. 
Header Text Observation Id 1 

Line 1 text ------------------ Alfred 
Line 2 text ------------------ M 
Line 3 text ------------------   14 
Line 4 text ------------------   69 
Line 5 text ------------------   112.5 
Line 6 text ------------------    1 

(new page) 
Header Text Observation Id 2 

Line 1 text ------------------ Alice 
Line 2 text ------------------ F 
Line 3 text ------------------   13 
Line 4 text ------------------   56.5 
Line 5 text ------------------   84 
Line 6 text ------------------    2 

(new page) 
... 
*/ 
+0

谢谢。我会检查这一点。我以前从未使用proc转置。 – 2009-02-28 08:01:12