SAS中文论坛
标题:
求助!如何在freq过程中输出output窗口中的列联表
[打印本页]
作者:
shiyiming
时间:
2004-3-29 11:22
标题:
求助!如何在freq过程中输出output窗口中的列联表
过程proc freq 在把输出结果写入数据集时,有out选项,但此数据集中只有统计变量、count、percent三个变量。对于像output窗口中列联表的形式则输不出来,请问各位有可法子? <!-- s:) --><img src="{SMILIES_PATH}/icon_smile.gif" alt=":)" title="Smile" /><!-- s:) -->
作者:
shiyiming
时间:
2004-3-29 21:17
实际上,tables语句后的out=选项所定义的输出数据集(即问题中所提及的输出数据集),就包含了output窗口中的列联表数据,只不过换了一种形式而已。
列联表的形式更符合我们通常用于表达的习惯方式,而输出数据集中的形式则方便于对数据的处理,比如我们要对数据进一步进行绘图等操作。
要想得到列联表形式的数据其实并不难,只要对输出数据集进行适当的转换即可达到目的。
以下程序可实现目标,但稍显复杂,各位可改进。不妥之处请批评指正。
proc freq;
tables i*j/all out=data1;
weight f;
output out=data1;
run;
proc sort data=data1;
by i;
run;
data data2;
retain j1-j5;
array x(0:4) j1-j5;/*assume j has 5 levels*/
set data1;
by i;
x(mod((_n_-1),5))=count;
if not(last.i) then delete;
drop j count percent;
run;
作者:
shiyiming
时间:
2004-3-30 09:32
标题:
Thanks!
但是还存在这样的一种情况,
即:在列联表中频数为0的项,在out=数据集中并不出现,拿student说的这个例子,就
是说以变量i分的组并不是每个都有5个元素,那么,上面的程序可能会导致错位!
欢迎光临 SAS中文论坛 (http://mysas.net/forum/)
Powered by Discuz! X3.2