楼主: jbw5956
3160 10

一个频度分析的问题 [推广有奖]

  • 1关注
  • 1粉丝

本科生

13%

还不是VIP/贵宾

-

威望
0
论坛币
32 个
通用积分
1.3500
学术水平
0 点
热心指数
0 点
信用等级
0 点
经验
526 点
帖子
31
精华
0
在线时间
106 小时
注册时间
2014-3-20
最后登录
2026-1-29

楼主
jbw5956 发表于 2014-8-6 14:06:33 |AI写论文

+2 论坛币
k人 参与回答

经管之家送您一份

应届毕业生专属福利!

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

经管之家联合CDA

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

感谢您参与论坛问题回答

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

+2 论坛币
proc freq data=file name;
table variable name/list; run;

这个公式只能求单列下的频度状况
如何修改公式可以求到多列的频度状况?
二维码

扫码加我 拉你入群

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

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

关键词:Variable Table ABLE name file

沙发
crazygoing 发表于 2014-8-6 16:30:39
proc freq data=file name;
table variable*name/list; run;

不知道你是不是要R*C表

藤椅
sas9.4 发表于 2014-8-6 18:47:02
proc sql 也可以求频度,均值之类的统计量的

板凳
jbw5956 发表于 2014-8-7 06:55:51
crazygoing 发表于 2014-8-6 16:30
proc freq data=file name;
table variable*name/list; run;
不是不是,就是想一次性求多列下的频度状况

报纸
jbw5956 发表于 2014-8-7 07:17:27
sas9.4 发表于 2014-8-6 18:47
proc sql 也可以求频度,均值之类的统计量的
具体应该怎么操作呢?

地板
crazygoing 发表于 2014-8-7 08:58:08
jbw5956 发表于 2014-8-7 06:55
不是不是,就是想一次性求多列下的频度状况
不太明白你的意思,你给个数据,给个你需要的效果再看看

7
jbw5956 发表于 2014-8-7 13:10:20
crazygoing 发表于 2014-8-7 08:58
不太明白你的意思,你给个数据,给个你需要的效果再看看
A    B     C     D    E
甲   乙    丙    丁   甲
乙   丙    甲    丁   丁
丙   丙    乙    乙   乙


比如说这个数据,我想求ABCDE下,所有甲乙丙丁出现的频率

8
crazygoing 发表于 2014-8-8 10:06:03
jbw5956 发表于 2014-8-7 13:10
A    B     C     D    E
甲   乙    丙    丁   甲
乙   丙    甲    丁   丁
sql的方法我没想出来,想到个笨办法,利用宏把多个变量合并成一个变量来计算频数。代码如下:
  1. data n;
  2. input A $    B  $   C   $  D $    E $ ;
  3. cards;
  4. 甲   乙    丙    丁   甲
  5. 乙   丙    甲    丁   丁
  6. 丙   丙    乙    乙   乙
  7. ;
  8. run;


  9. %let v_list= a b c d e;
  10. %macro muti_freq;
  11. %do i=1 %to 5; *几个变量就填几;
  12. %let var=%scan(&v_list,&i,' ');
  13. data &var(keep=&var rename=(&var=x_new));
  14. set n ;run;
  15. %end;
  16. data x;set &v_list;        run;
  17. %mend;
  18. %muti_freq;
  19. proc freq data=x;
  20. table x_new;
  21. run;
复制代码
已有 1 人评分学术水平 热心指数 信用等级 收起 理由
yongyitian + 3 + 3 + 3 精彩帖子

总评分: 学术水平 + 3  热心指数 + 3  信用等级 + 3   查看全部评分

9
jbw5956 发表于 2014-8-8 13:53:28
crazygoing 发表于 2014-8-8 10:06
sql的方法我没想出来,想到个笨办法,利用宏把多个变量合并成一个变量来计算频数。代码如下:
thanks for your help, but the data that i have is much huge so i am not sure if this method will be going work.  if i try to use your codes, i am afraid that it will cost much time.  i dont know  maybe i have to use your coeds      thanks so much!

10
jingju11 发表于 2014-8-9 01:36:57
jbw5956 发表于 2014-8-8 13:53
thanks for your help, but the data that i have is much huge so i am not sure if this method will b ...
我决的这个问题和效率联系也许不是关键,除非你的数据特别大.几百万的数据记录没有大的差别.
.京剧.也可以参考我的:(时间过得好快.这时我五六年前的程序)


  1. %let v_list= a b c d e;
  2. data _null_;
  3. call execute('proc freq data =have noprint;');
  4. do i =1 to countw("&v_list");
  5.   x =scan("&v_list", i);
  6.   call execute(catx(' ', 'tables ', x, '/list out =', x, '(rename =(', x, '=commonx));'));
  7. end;
  8. call execute('run;
  9.               data freqs;  set &v_list;  run;
  10.               proc freq data =freqs; tables commonx; weight count; run;');
  11. run;
复制代码

已有 1 人评分学术水平 热心指数 信用等级 收起 理由
yongyitian + 3 + 3 + 3 精彩帖子

总评分: 学术水平 + 3  热心指数 + 3  信用等级 + 3   查看全部评分

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

本版微信群
加好友,备注cda
拉您进交流群
GMT+8, 2026-2-12 10:07