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