按长度分页和分组 sas proc 报告

page break by length and group sas proc report

我想创建一个分页值,它可以帮助我在使用 proc 报告时分页。

现在我的数据是这样的:

组值

一个 1

一个2

一个 3

...

b 1

b 2

...

c 1

c 2

c 3

并且假设我只希望每页 两行,并且如果组更改则中断。 所以我需要这样的数据集:

组值页面

1 1

一个 2 1

一个 3 2

...

b 1 3

b 2 3

...

c 1 4

c 2 4

c 3 5

谁能帮我解决这个问题?谢谢!

  • 保留跨行保留值。创建可用于跟踪每组记录数的计数器值。这允许您将其拆分为 N 个数量的页面。
  • 在每组开始时使用 BY 和 FIRST 重置计数器
  • 检查是否需要增加页面
data have;
input Group $ Value;
cards;
a 1
a 2
a 3
b 1
b 2
c 1
c 2
c 3
;;;;

data want;
set have;
by group;

retain counter page;

if first.group then counter=0;

counter+1;

if mod(counter, 2) =1 or first.group then page+1;

run;

proc print data=want;
run;

结果:

Obs Group   Value   counter page
1   a   1   1   1
2   a   2   2   1
3   a   3   3   2
4   b   1   1   3
5   b   2   2   3
6   c   1   1   4
7   c   2   2   4
8   c   3   3   5