过程报告:在子组上添加缩进
proc report: add indentation on sub-group
在 proc 报告中,我很难在第二级(高级术语 1)或第三级等之前获得缩进。
当我使用 style(column)=[cellwidth=6.5 cm JUST=LEFT asis=on] 时,我得到了缩进,但是由于句子的长度,连续的下一行从头开始。例如:
有没有办法让缩进在不同级别对齐?
这是我的过程报告程序:
proc report data=final nowindows split='~' headline headskip contents='' formchar(2)='_' missing spacing=1;
*by seq seq_c1 seq_trt;
columns sqn seq ord cat _c1 - _c6;
define sqn / group order=data noprint;
define seq / group order=data noprint;
define ord /display order=data noprint;
define cat / display order=data style(column)=[cellwidth=6.5 cm JUST=LEFT asis=on] style(header)=[JUST=LEFT] flow ;
define _c1 / display order = data style(column)=[cellwidth=2.8 cm JUST=LEFT] style(header)=[JUST=Center] ;
define _c2 / display order = data style(column)=[cellwidth=2.8 cm JUST=LEFT] style(header)=[JUST=Center];
define _c3 / display order = data style(column)=[cellwidth=2.8 cm JUST=LEFT] style(header)=[JUST=Center];
define _c4 / display order = data style(column)=[cellwidth=2.8 cm JUST=LEFT] style(header)=[JUST=Center];
define _c5 / display order = data style(column)=[cellwidth=2.8 cm JUST=LEFT] style(header)=[JUST=Center];
define _c6 / display order = data style(column)=[cellwidth=2.8 cm JUST=LEFT] style(header)=[JUST=Center];
compute cat;
if ord=3 then do; cat=' '||cat; end;
if ord=4 then do; cat=' '||cat; end;
endcomp;
compute after sqn;
line '';
endcomp;
run;
谢谢。
下面是生成数据的小代码:
data check;
length sqn 8. cat 0.;
input sqn cat $;
datalines;
1 Uncoded
2 Uncoded
3 ABNORMAL-MENSTRUATION-DIAGNOSTIC-CURETTAGE-OF-THE-UTERINE-CAVITY.
3 ANXIETY
3 CARPAL-TUNNEL-SYNDROME
3 EXACERBATION
;
run;
我会使用实际的样式元素来解决这个问题,而不是手动添加空格。这里 LEFTMARGIN
可能是正确的方法,尽管 INDENT
风格有时更可取;我认为 LEFTMARGIN
能满足您的需求。
你可以在http://communities.sas.com, like this one上看到一些问题,有类似的要求和答案(我用那个问题作为这个答案的参考)。
data check;
length sqn 8. cat 0 _c1-_c6 ;
array _c[6] $ (6*"TestingText");
input sqn cat $;
seq=_n_;
ord = _n_;
datalines;
1 Uncoded
2 Uncoded
3 ABNORMAL-MENSTRUATION-DIAGNOSTIC-CURETTAGE-OF-THE-UTERINE-CAVITY.
3 ANXIETY
3 CARPAL-TUNNEL-SYNDROME
3 EXACERBATION
;
run;
ods pdf file="c:\temp\test.pdf";
proc report data=check nowindows split='~' headline headskip contents='' formchar(2)='_' missing spacing=1;
*by seq seq_c1 seq_trt;
columns sqn seq ord cat _c1 - _c6;
define sqn / group order=data noprint;
define seq / group order=data noprint;
define ord /display order=data noprint;
define cat / display order=data style(column)=[cellwidth=6.5 cm JUST=LEFT asis=on] style(header)=[JUST=LEFT] flow ;
define _c1 / display order = data style(column)=[cellwidth=2.8 cm JUST=LEFT] style(header)=[JUST=Center] ;
define _c2 / display order = data style(column)=[cellwidth=2.8 cm JUST=LEFT] style(header)=[JUST=Center];
define _c3 / display order = data style(column)=[cellwidth=2.8 cm JUST=LEFT] style(header)=[JUST=Center];
define _c4 / display order = data style(column)=[cellwidth=2.8 cm JUST=LEFT] style(header)=[JUST=Center];
define _c5 / display order = data style(column)=[cellwidth=2.8 cm JUST=LEFT] style(header)=[JUST=Center];
define _c6 / display order = data style(column)=[cellwidth=2.8 cm JUST=LEFT] style(header)=[JUST=Center];
compute cat;
if ord=3 then call define('cat','style','style={leftmargin=0.1in}');
if ord=4 then call define('cat','style','style={leftmargin=0.2in}');
endcomp;
compute after sqn;
line '';
endcomp;
run;
ods pdf close;
在 proc 报告中,我很难在第二级(高级术语 1)或第三级等之前获得缩进。
当我使用 style(column)=[cellwidth=6.5 cm JUST=LEFT asis=on] 时,我得到了缩进,但是由于句子的长度,连续的下一行从头开始。例如:
有没有办法让缩进在不同级别对齐?
这是我的过程报告程序:
proc report data=final nowindows split='~' headline headskip contents='' formchar(2)='_' missing spacing=1;
*by seq seq_c1 seq_trt;
columns sqn seq ord cat _c1 - _c6;
define sqn / group order=data noprint;
define seq / group order=data noprint;
define ord /display order=data noprint;
define cat / display order=data style(column)=[cellwidth=6.5 cm JUST=LEFT asis=on] style(header)=[JUST=LEFT] flow ;
define _c1 / display order = data style(column)=[cellwidth=2.8 cm JUST=LEFT] style(header)=[JUST=Center] ;
define _c2 / display order = data style(column)=[cellwidth=2.8 cm JUST=LEFT] style(header)=[JUST=Center];
define _c3 / display order = data style(column)=[cellwidth=2.8 cm JUST=LEFT] style(header)=[JUST=Center];
define _c4 / display order = data style(column)=[cellwidth=2.8 cm JUST=LEFT] style(header)=[JUST=Center];
define _c5 / display order = data style(column)=[cellwidth=2.8 cm JUST=LEFT] style(header)=[JUST=Center];
define _c6 / display order = data style(column)=[cellwidth=2.8 cm JUST=LEFT] style(header)=[JUST=Center];
compute cat;
if ord=3 then do; cat=' '||cat; end;
if ord=4 then do; cat=' '||cat; end;
endcomp;
compute after sqn;
line '';
endcomp;
run;
谢谢。
下面是生成数据的小代码:
data check;
length sqn 8. cat 0.;
input sqn cat $;
datalines;
1 Uncoded
2 Uncoded
3 ABNORMAL-MENSTRUATION-DIAGNOSTIC-CURETTAGE-OF-THE-UTERINE-CAVITY.
3 ANXIETY
3 CARPAL-TUNNEL-SYNDROME
3 EXACERBATION
;
run;
我会使用实际的样式元素来解决这个问题,而不是手动添加空格。这里 LEFTMARGIN
可能是正确的方法,尽管 INDENT
风格有时更可取;我认为 LEFTMARGIN
能满足您的需求。
你可以在http://communities.sas.com, like this one上看到一些问题,有类似的要求和答案(我用那个问题作为这个答案的参考)。
data check;
length sqn 8. cat 0 _c1-_c6 ;
array _c[6] $ (6*"TestingText");
input sqn cat $;
seq=_n_;
ord = _n_;
datalines;
1 Uncoded
2 Uncoded
3 ABNORMAL-MENSTRUATION-DIAGNOSTIC-CURETTAGE-OF-THE-UTERINE-CAVITY.
3 ANXIETY
3 CARPAL-TUNNEL-SYNDROME
3 EXACERBATION
;
run;
ods pdf file="c:\temp\test.pdf";
proc report data=check nowindows split='~' headline headskip contents='' formchar(2)='_' missing spacing=1;
*by seq seq_c1 seq_trt;
columns sqn seq ord cat _c1 - _c6;
define sqn / group order=data noprint;
define seq / group order=data noprint;
define ord /display order=data noprint;
define cat / display order=data style(column)=[cellwidth=6.5 cm JUST=LEFT asis=on] style(header)=[JUST=LEFT] flow ;
define _c1 / display order = data style(column)=[cellwidth=2.8 cm JUST=LEFT] style(header)=[JUST=Center] ;
define _c2 / display order = data style(column)=[cellwidth=2.8 cm JUST=LEFT] style(header)=[JUST=Center];
define _c3 / display order = data style(column)=[cellwidth=2.8 cm JUST=LEFT] style(header)=[JUST=Center];
define _c4 / display order = data style(column)=[cellwidth=2.8 cm JUST=LEFT] style(header)=[JUST=Center];
define _c5 / display order = data style(column)=[cellwidth=2.8 cm JUST=LEFT] style(header)=[JUST=Center];
define _c6 / display order = data style(column)=[cellwidth=2.8 cm JUST=LEFT] style(header)=[JUST=Center];
compute cat;
if ord=3 then call define('cat','style','style={leftmargin=0.1in}');
if ord=4 then call define('cat','style','style={leftmargin=0.2in}');
endcomp;
compute after sqn;
line '';
endcomp;
run;
ods pdf close;