SAS中文论坛

标题: proc report and proc tabulate 可以实现这样的表吗?请教高手解答 [打印本页]

作者: shiyiming    时间: 2011-8-27 20:15
标题: proc report and proc tabulate 可以实现这样的表吗?请教高手解答
数据:
data  b;
  input  sub_no pot x y;
   cards;
1 1 0 0
1 2 0 73
1 3 0 73
1 4 20 28
1 5 20 28
2 1 0 0
2 2 0 66
2 3 46 67
2 4 123 169
2 5        237 321
;
run;

output:
pot          sub_no= 1                    sub_no= 2       
_______ x______y____________x_________y
1_______0______0___________0__________0

2__________________________0__________66
________0_____ 73________________________
3__________________________46_________67

4 _________________________123_________169
________20_____28________________________
5 _________________________237__________321

难点:row 2和3对于sub_no1是合并了的,是因为sub_no1的pot2,3对应的x,y值都是相同的而如果pot 2,3对应的x,y值不同,则不会被合并


太不方便了,连图片都没法贴,只能用线代替下
作者: shiyiming    时间: 2011-9-3 02:07
标题: Re: proc report and proc tabulate 可以实现这样的表吗?请教高手解答
假如Sub_No有太多不同取值,输出的表会很宽。同时 subfmt 也应相应调整。 可能不需要定义格式,一时弄不清楚。

data b;
input sub_no pot x y;
cards;
1 1 0 0
1 2 0 73
1 3 0 73
1 4 20 28
1 5 20 28
2 1 0 0
2 2 0 66
2 3 46 67
2 4 123 169
2 5 237 321
;
run;


proc format lib=work;
value subfmt
1='Sub_No=1'
2='Sub_No=2';
run;

proc sort data=b  ;
by sub_NO x y pot;
run;

data c;
format sub_no subfmt.;
set b;
by sub_NO x y pot;
if last.y;
run;

proc tabulate data=c ;
class pot sub_no ;
var x y;
table pot='',sub_No=''*f=subfmt.*(x='X'*sum='' y='Y'*sum='')
/box=[label="Pot"];
run;
作者: shiyiming    时间: 2011-9-9 13:57
标题: Re: proc report and proc tabulate 可以实现这样的表吗?请教高手解答
多谢回复

接近最后的图表了。
但是最关键的地方还是没有做到,
那就是对于sub_no=1, row 2,3 对应的x,y的值是相同的,他们会合并到一个格子,而不是分开两个row来显示的。




欢迎光临 SAS中文论坛 (http://mysas.net/forum/) Powered by Discuz! X3.2