全部版块 我的主页
论坛 数据科学与人工智能 数据分析与数据科学 SAS专版
15633 10
2011-08-17
我有一个数据集,数据类型是类似这样的:
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,但是这个貌似只是得出一个表格,并且不好输出。。。我想得到一个矩阵,然后输出。。。
谢谢高手赐教。。。
二维码

扫码加我 拉你入群

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

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

全部回复
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;
二维码

扫码加我 拉你入群

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

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

2011-8-17 15:33:40
pobel 发表于 2011-8-17 15:15
data a;
input id  $     type $;
cards;
十分感谢!谢谢大神!!
二维码

扫码加我 拉你入群

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

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

2011-8-17 16:25:23
复制代码
再转置
二维码

扫码加我 拉你入群

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

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

2011-8-17 21:10:33
SQL  还挺好用,貌似
二维码

扫码加我 拉你入群

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

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

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呢??
二维码

扫码加我 拉你入群

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

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

点击查看更多内容…
相关推荐
栏目导航
热门文章
推荐文章

说点什么

分享

扫码加好友,拉您进群
各岗位、行业、专业交流群