Proc Report - печать идентификатора в первой строке каждой страницы

Я сообщаю большой список значений для подгрупп моих данных. У меня есть данные в той форме, которую я сейчас хочу, и мне нужно внести косметические изменения. Я пытаюсь найти способ напечатать значение подгруппы в первой строке каждой страницы, но пустым для остальных значений.

Я пытался сделать это несколькими способами, используя ID вариант в define, используя compute after блок, compute after _page_колонка нумерации страниц и с помощью by утверждение, но я не могу поддерживать структуру моих данных с помощью этих методов.

Вот некоторые примеры данных и базовый отчет по процессу:

/* 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 работают на нескольких страницах. Я хочу, чтобы А и В появились на их первом наблюдении и первом наблюдении на новой странице.

Любая помощь, как всегда, ценится.

1 ответ

Непонятно, что именно вы хотите, но вот несколько вариантов.

Один: 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;
Другие вопросы по тегам