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;