0

我正在报告我的数据子组的大量值列表。我有我目前想要的形式的数据,只是需要进行外观更改。我正在尝试找到一种方法在每页的第一行打印子组的值,但其余值为空。

ID我已经尝试使用 in 中的选项define、使用compute after块、compute after _page_分页列和使用语句以多种方式执行此操作,by但我无法使用这些方法维护数据的结构。

以下是一些示例数据和基本 proc 报告:

/* basic data */
data test;
  input ID $ variable1 $ variable2 $;
  datalines;
A Lemon Yellow
A Orange Red
A Lemon Blue
A Apple Green
A Lemon Yellow
A Orange Red
A Lemon Blue
A Apple Green
A Lemon Yellow
A Orange Pink
A Lemon Blue
A Apple Red
B Lemon Yellow
B Orange Red
B Lemon Blue
B Apple Green
B Lemon Yellow
B Orange Red
B Lemon Blue
B Apple Green
B Lemon Yellow
B Orange Pink
B Lemon Blue
B Apple Red
;
run;

/* output several times to cover multiple pages */
data test2;
set test;
if id = "A" then do;
output;
output;
output;
end;

output;
run;

/* proc report */
ods pdf;
proc report data = test2  nocenter nowd ;

define ID / order id ;
define variable1 / display;
define variable2 /display;

compute after ID;
  line '';
  endcomp;

run;
ods pdf close;

所以在这个例子中,A 和 B 的值跨越了多个页面。我希望 A 和 B 出现在他们的第一次观察和新页面上的第一次观察中。

一如既往地感谢任何帮助。

4

1 回答 1

0

目前尚不清楚您到底想要什么,但这里有一些选择。

一:compute before _page_。这可以让你把它作为第一个单元格放在表格中,但看起来有点……奇怪。

二:定义by组。这会在组的开头打印它by

*COMPUTE BEFORE _PAGE_ option;

ods pdf file="c:\temp\test.pdf";
proc report data = test2  nocenter nowd ;

define ID / order id ;
define variable1 / display;
define variable2 /display;

compute after ID;
  line '';
  endcomp;

compute before _page_;  *prints ID here - can add more text if you want;
  line ID $;
endcomp;

run;
ods pdf close;


*BY groups;

ods pdf file="c:\temp\test.pdf" startpage=never;
proc report data = test2  nocenter nowd ;
by id;                                    *adding by group here;
define ID / order id ;
define variable1 / display;
define variable2 /display;

compute after ID;
  line '';
  endcomp;

run;
ods pdf close;
于 2017-03-14T15:56:09.513 回答