全部版块 我的主页
论坛 数据科学与人工智能 数据分析与数据科学 SAS专版
2509 6
2016-09-14
有原始数据
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开始累加!

二维码

扫码加我 拉你入群

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

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

全部回复
2016-9-14 15:27:50
fyp198744 发表于 2016-9-14 15:08
有原始数据
现在希望做个分页标记
每页只能输出10行
我觉得可以将_n_  与Put  _page_合用。虽然我没有试过,希望楼主成功后分享下代码。谢谢~
二维码

扫码加我 拉你入群

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

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

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;
二维码

扫码加我 拉你入群

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

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

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,所以就不需要另起一页来输出了!
二维码

扫码加我 拉你入群

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

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

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,你可以改成单变量的
二维码

扫码加我 拉你入群

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

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

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是页数!
二维码

扫码加我 拉你入群

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

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

点击查看更多内容…
相关推荐
栏目导航
热门文章
推荐文章

说点什么

分享

扫码加好友,拉您进群
各岗位、行业、专业交流群