楼主: pussqr
15021 10

[原创博文] 有SAS中关于freq或者count的问题 [推广有奖]

  • 0关注
  • 0粉丝

大专生

70%

还不是VIP/贵宾

-

威望
0
论坛币
53 个
通用积分
0
学术水平
0 点
热心指数
0 点
信用等级
0 点
经验
313 点
帖子
54
精华
0
在线时间
22 小时
注册时间
2008-7-21
最后登录
2014-5-5

+2 论坛币
k人 参与回答

经管之家送您一份

应届毕业生专属福利!

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

经管之家联合CDA

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

感谢您参与论坛问题回答

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

+2 论坛币
我有一个数据集,数据类型是类似这样的:
id      type
1       70
1       70
1       73
2       95
2       100
2       73
...
我现在想合并每个id下的type的频数,并且做成矩阵形式,就是能做成这样:
                  type
id  |  70    73    95   100....
--------------------------------
1    |   2     1      0       0  ....
2    |   0     1      1       1  .....
.....

我用了proc freq,但是这个貌似只是得出一个表格,并且不好输出。。。我想得到一个矩阵,然后输出。。。
谢谢高手赐教。。。
二维码

扫码加我 拉你入群

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

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

关键词:Count freq Fre REQ type count

本帖被以下文库推荐

沙发
pobel 在职认证  发表于 2011-8-17 15:15:41 |只看作者 |坛友微信交流群
data a;
input id  $     type $;
cards;
1       70
1       70
1       73
2       95
2       100
2       73
;
proc freq data=a noprint order=data;
   tables id*type/out=b sparse;
run;

proc transpose data=b out=c(drop=_name_ _label_);
    by id;
        id type;
        var count;
run;
和谐拯救危机

使用道具

藤椅
pussqr 发表于 2011-8-17 15:33:40 |只看作者 |坛友微信交流群
pobel 发表于 2011-8-17 15:15
data a;
input id  $     type $;
cards;
十分感谢!谢谢大神!!

使用道具

板凳
yugao1986 发表于 2011-8-17 16:25:23 |只看作者 |坛友微信交流群
  1. proc sql;
  2. create table b as
  3. select id,
  4.        type,
  5.            count(type) as count
  6. from a
  7. group by id, type;
  8. quit;
复制代码
再转置
三人行必有我师

使用道具

报纸
zkymath 在职认证  发表于 2011-8-17 21:10:33 |只看作者 |坛友微信交流群
SQL  还挺好用,貌似

使用道具

地板
pussqr 发表于 2011-8-18 13:07:39 |只看作者 |坛友微信交流群
yugao1986 发表于 2011-8-17 16:25
再转置
当我需要用到类似proc freq中的weight这一项功能时,我还有一列数据price,按照id和type来统计price。我扩展了一下您的语句,
proc sql;
create table b as
select id,
       type,
           sum(price) as sum
from a
group by id, type;
quit;
再转置后,发现没有sum的都是一个点(就是缺失),我怎么解决这个问题,把缺失的值都设为0呢??

使用道具

7
yugao1986 发表于 2011-8-18 14:05:04 |只看作者 |坛友微信交流群
pussqr 发表于 2011-8-18 13:07
当我需要用到类似proc freq中的weight这一项功能时,我还有一列数据price,按照id和type来统计price。我扩 ...
  1. data new(drop=i);                                                   
  2.   set old;                                                            
  3.   array miss(*) _numeric_;                                            
  4.   do i = 1 to dim(miss);                                             
  5.     if miss(i)=. then miss(i)=0;                                    
  6.   end;                                                                    
  7. run;
复制代码
三人行必有我师

使用道具

8
soporaeternus 发表于 2011-8-18 14:14:36 |只看作者 |坛友微信交流群
不作输出数据的话,貌似tabulate也可以吧,纯粹建议哈
Let them be hard, but never unjust

使用道具

9
cynthialam 发表于 2011-12-22 14:25:10 |只看作者 |坛友微信交流群
关键就是要输出表啊....
感谢LZ的问题,感谢各位高手的解答~

使用道具

10
louis_bai 在职认证  发表于 2018-9-13 14:50:05 |只看作者 |坛友微信交流群
proc report data=a out=b;
   column id type;
   define id / group;
   define type/ across;
run;

使用道具

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

本版微信群
加好友,备注cda
拉您进交流群

京ICP备16021002-2号 京B2-20170662号 京公网安备 11010802022788号 论坛法律顾问:王进律师 知识产权保护声明   免责及隐私声明

GMT+8, 2024-4-27 02:23