楼主: crazygoing
13367 11

[原创博文] 求教:sas如何输出频数表到数据集 [推广有奖]

  • 0关注
  • 47粉丝

已卖:716份资源

教授

29%

还不是VIP/贵宾

-

威望
1
论坛币
4821 个
通用积分
21.8870
学术水平
165 点
热心指数
203 点
信用等级
146 点
经验
48691 点
帖子
441
精华
1
在线时间
1326 小时
注册时间
2007-11-9
最后登录
2024-7-27

楼主
crazygoing 发表于 2010-4-20 16:13:36 |AI写论文

+2 论坛币
k人 参与回答

经管之家送您一份

应届毕业生专属福利!

求职就业群
赵安豆老师微信:zhaoandou666

经管之家联合CDA

送您一个全额奖学金名额~ !

感谢您参与论坛问题回答

经管之家送您两个论坛币!

+2 论坛币
  1. data a;
  2. input x y$ @@;
  3. cards;
  4. 1        语文
  5. 2        语文
  6. 3        语文
  7. 4        语文
  8. 5        语文
  9. 6        语文
  10. 7        数学
  11. 8        数学
  12. 9        数学
  13. 10        数学
  14. 11        数学
  15. 12        数学
  16. 13        数学
  17. 14        数学
  18. 15        英语
  19. 16        英语
  20. 17        英语
  21. 18        英语
  22. 19        英语
  23. 20        英语
  24. ;
  25. run;
  26. proc freq;
  27. table y;
  28. run;
复制代码

如上程序,可生成y的频数表,可是如何将这个频数表变成数据集呢?
二维码

扫码加我 拉你入群

请注明:姓名-公司-职位

以便审核进群资格,未注明则拒绝

关键词:频数表 数据集 cards Input Table 英语 如何 程序 数学 语文

回帖推荐

crazygoing 发表于11楼  查看完整内容

又钻研了会,最初目的是想弄到excel里,现在解决80%了。 回去睡觉,我都觉得自己有灌水嫌疑了。

本帖被以下文库推荐

沙发
sushe1527 发表于 2010-4-20 16:17:58
proc freq data=a ;

table y/out=mp3;

run;

藤椅
crazygoing 发表于 2010-4-20 16:34:09
2# sushe1527
感谢,嗯,进一步问一下,如下面这个
  1. data a;
  2. input x1 x2;
  3. cards;
  4. 1 2
  5. 1 3
  6. 2 2
  7. 2 3
  8. 1 2
  9. 1 3
  10. 2 2
  11. 2 3
  12. ;
  13. run;
  14. proc freq data=a;
  15. table x1*x2 /out=mp3;
  16. run;
复制代码

按照2楼的方法输出的频数表和sas看到的频数表结果就不一样了,我要想的是所见及所得的那种交叉频数表。

板凳
sushe1527 发表于 2010-4-20 17:02:24
你看到的交叉频数表结果倒是能输出为其他格式,不过输出到数据集,等高人。。。。

报纸
crackman 发表于 2010-4-20 17:37:55
期待高手
把交叉表结果输出到数据集里面来

地板
crazygoing 发表于 2010-4-20 21:38:33
想了一个笨办法如下,请教高人,能不能简化代码,或者写个宏程序使其通用化
  1. proc freq data=a;
  2. table x1*x2 /out=tab;
  3. run;

  4. proc sql;
  5. create table dis12 as select x1, count as x22 from tab
  6. where  x1=1 and x2=2;
  7. proc sql;
  8. create table dis13 as select x1, count as x23 from tab
  9. where  x1=1 and x2=3;
  10. proc sql;
  11. create table dis22 as select x1, count as x22 from tab
  12. where  x1=2 and x2=2;
  13. proc sql;
  14. create table dis23 as select x1, count as x23 from tab
  15. where  x1=2 and x2=3;
  16. quit;

  17. data table;
  18. merge dis12 dis13 dis22 dis23;
  19. by x1;
  20. run;
复制代码

7
crackman 发表于 2010-4-20 21:47:38
楼上你再思考了楼主的意思
和你的结果
其实有点问题复杂化了

8
crazygoing 发表于 2010-4-20 21:53:17
7# crackman
我是有的钻牛角尖了,但还是希望能解决这个问题啊,有时候宁愿多写代码,也懒得用鼠标复制粘贴

9
sushe1527 发表于 2010-4-20 22:08:55
crackman 发表于 2010-4-20 21:47
楼上你再思考了楼主的意思
和你的结果
其实有点问题复杂化了
楼上和楼主是一个人

10
yatming 发表于 2010-4-20 22:18:34
是不是把某个变量变为列维度?以下代码?
否则同一变量下的值既有维度又有频数,还有百分比,不合理吧。
  1. proc freq data=a;
  2.         table x1*x2 /out=tab;
  3. run;

  4. /*频数*/
  5. proc transpose data=mp3(drop=PERCENT)
  6.                         out=tt(drop=_name_ _label_) prefix=y_;
  7.         by x1;
  8.         id x2;
  9. run;
  10. /*总频数百分比*/
  11. proc transpose data=mp3(drop=COUNT) out=tt(drop=_name_ _label_) prefix=y_;
  12.         by x1;
  13.         id x2;
  14. run;
复制代码

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

本版微信群
加好友,备注cda
拉您进交流群
GMT+8, 2025-12-25 03:24