SAS中文论坛

 找回密码
 立即注册

扫一扫,访问微社区

查看: 1037|回复: 2
打印 上一主题 下一主题

求助!如何在freq过程中输出output窗口中的列联表

[复制链接]

49

主题

76

帖子

1462

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
1462
楼主
 楼主| 发表于 2004-3-29 11:22:07 | 只看该作者

求助!如何在freq过程中输出output窗口中的列联表

过程proc freq 在把输出结果写入数据集时,有out选项,但此数据集中只有统计变量、count、percent三个变量。对于像output窗口中列联表的形式则输不出来,请问各位有可法子? <!-- s:) --><img src="{SMILIES_PATH}/icon_smile.gif" alt=":)" title="Smile" /><!-- s:) -->
回复 支持 反对

使用道具 举报

49

主题

76

帖子

1462

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
1462
沙发
 楼主| 发表于 2004-3-29 21:17:42 | 只看该作者
实际上,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;
回复 支持 反对

使用道具 举报

49

主题

76

帖子

1462

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
1462
板凳
 楼主| 发表于 2004-3-30 09:32:08 | 只看该作者

Thanks!

但是还存在这样的一种情况,

即:在列联表中频数为0的项,在out=数据集中并不出现,拿student说的这个例子,就
是说以变量i分的组并不是每个都有5个元素,那么,上面的程序可能会导致错位!
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

QQ|小黑屋|手机版|Archiver|SAS中文论坛  

GMT+8, 2025-1-9 23:35 , Processed in 0.116197 second(s), 20 queries .

Powered by Discuz! X3.2

© 2001-2013 Comsenz Inc.

快速回复 返回顶部 返回列表