楼主: fyp198744
2193 6

有没有什么简单的分页标记方式呢? [推广有奖]

  • 0关注
  • 1粉丝

讲师

2%

还不是VIP/贵宾

-

威望
0
论坛币
135 个
通用积分
0
学术水平
0 点
热心指数
0 点
信用等级
0 点
经验
5181 点
帖子
257
精华
0
在线时间
258 小时
注册时间
2016-5-23
最后登录
2019-9-30

+2 论坛币
k人 参与回答

经管之家送您一份

应届毕业生专属福利!

求职就业群
赵安豆老师微信:zhaoandou666

经管之家联合CDA

送您一个全额奖学金名额~ !

感谢您参与论坛问题回答

经管之家送您两个论坛币!

+2 论坛币
有原始数据
socptlabel
aaaaaaaaaa
aaaaafaeg**faeg
aaaaabfgb**bfgb
aaaaaeret**eret
aaaaagfd**gfd
aaaaatyjh**tyjh
aaaaajyt**jyt
bbbbbbbbbb
bbbbbgjt**gjt
bbbbbtjyt**tjyt
cccccccccc
cccccjuyj**juyj
cccccjjmkuy**jjmkuy
cccccjrftj**jrftj
cccccjyt**jyt
dddddddddd
dddddjkyt**jkyt
现在希望做个分页标记
socptlabel行数页数
aaaaaaaaaa

1

1

aaaaafaeg**faeg

2

1

aaaaabfgb**bfgb

3

1

aaaaaeret**eret

4

1

aaaaagfd**gfd

5

1

aaaaatyjh**tyjh

6

1

aaaaajyt**jyt

7

1

bbbbbbbbbb

1

2

bbbbbgjt**gjt

2

2

bbbbbtjyt**tjyt

3

2

cccccccccc

4

2

cccccjuyj**juyj

5

2

cccccjjmkuy**jjmkuy

6

2

cccccjrftj**jrftj

7

2

cccccjyt**jyt

8

2

dddddddddd

1

3

dddddjkyt**jkyt

2

3

每页只能输出10行
希望同一组soc不被截断,只输出在一页上;
也就是说行数从1开始累加,一旦累加到10,除非这行正好是某组soc的最后一行,不然这组soc就被分配到下一页,也就是页数加1,然后行数从新从1开始累加!

二维码

扫码加我 拉你入群

请注明:姓名-公司-职位

以便审核进群资格,未注明则拒绝

关键词:有没有 label AAER Abel 原始数据

沙发
Strive、 发表于 2016-9-14 15:27:50 来自手机 |只看作者 |坛友微信交流群
fyp198744 发表于 2016-9-14 15:08
有原始数据
现在希望做个分页标记
每页只能输出10行
我觉得可以将_n_  与Put  _page_合用。虽然我没有试过,希望楼主成功后分享下代码。谢谢~

使用道具

藤椅
wwang111 发表于 2016-9-14 17:04:32 |只看作者 |坛友微信交流群
soc=ccccc的时候,页数不需要加1吗?如果是输错了,可以试试这个:

proc sort data=test;
by soc pt;
run;

data wanted;
set test;
by soc pt;
if first.soc then line=0;
line+1;
if soc ne lag(soc) then page+1;
run;

使用道具

板凳
fyp198744 发表于 2016-9-18 12:56:36 |只看作者 |坛友微信交流群
wwang111 发表于 2016-9-14 17:04
soc=ccccc的时候,页数不需要加1吗?如果是输错了,可以试试这个:

proc sort data=test;
不是输错了!我并不是想把每个soc分给一个page,而是希望每个page能够容纳完整的soc,因为当soc=ccccc的时候,还能挤得进上一张page,所以就不需要另起一页来输出了!

使用道具

报纸
wang1839 在职认证  发表于 2016-9-18 14:56:21 |只看作者 |坛友微信交流群
/*create page for report        */
%macro page (var1=,var2=);
proc sql;
        create table f as select count(*) as n,&var1,&var2 from final group by &var1,&var2;
quit;

data f1;
        set f;
        by  &var1;
        if first.&var1 then sum=n;else sum+n;
        p=ceil(sum/18);p1=lag(p);
        if first.&var1 | p>p1 then page+1;
        drop sum n p p1;
run;

data final3;
        merge f1 final;
        by   &var1 &var2 ;
run;

%mend page;
本人写的一个二变量分页的MACRO,你可以改成单变量的

使用道具

地板
fyp198744 发表于 2016-9-19 11:03:51 |只看作者 |坛友微信交流群
Strive、 发表于 2016-9-14 15:27
我觉得可以将_n_  与Put  _page_合用。虽然我没有试过,希望楼主成功后分享下代码。谢谢~
data z_final_4;
        set z_final_3;
        by grou;
        if _n_=1 then pageb=1;
        if first.grou then lin+gn;
        if lin > 24 then do;pageb+1;lin=gn;end;
run;

gn是soc内的行数,grou是soc的排序数,lin是行数,pageb是页数!

使用道具

7
黄火火 发表于 2019-3-11 16:29:17 |只看作者 |坛友微信交流群
fyp198744 发表于 2016-9-18 12:56
不是输错了!我并不是想把每个soc分给一个page,而是希望每个page能够容纳完整的soc,因为当soc=ccccc的时 ...
请问您解决了这个问题吗?我也想知道这个怎么标记更好实现,有的话能展示一下吗?谢谢您的分享

使用道具

您需要登录后才可以回帖 登录 | 我要注册

本版微信群
加好友,备注cda
拉您进交流群

京ICP备16021002-2号 京B2-20170662号 京公网安备 11010802022788号 论坛法律顾问:王进律师 知识产权保护声明   免责及隐私声明

GMT+8, 2024-4-25 18:42