全部版块 我的主页
论坛 数据科学与人工智能 数据分析与数据科学 SAS专版
2506 3
2012-11-07
Y X1 X2 X3 X4 X5 X6
1 23 43 63 18 16 87
2 85 45 87 80 56 85
3 76 88 44 35 91 45
4 23 97 57 35 43 16
5 87 68 46 87 45 36
6 88 45 98 76 63 23

数据如上所示,期望得到的结果的变量如下所示
Y X1 X2 X3 X4 X5 X6 freq1 freq2 freq3 freq4 freq5 freq6

我想求出freq1 freq2 freq3 freq4 freq5 freq6
freq2就是对应的那行的X2在整个数据集所有列(包括X1 X2 X3 X4 X5 X6)出现的频数,
求教大仙指导啊!!
谢谢前辈
二维码

扫码加我 拉你入群

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

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

全部回复
2012-11-7 10:41:53
我也来学习学习
二维码

扫码加我 拉你入群

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

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

2012-11-7 11:15:29
data test;
input
Y X1 X2 X3 X4 X5 X6;
cards;
1 23 43 63 18 16 87
2 85 45 87 80 56 85
3 76 88 44 35 91 45
4 23 97 57 35 43 16
5 87 68 46 87 45 36
6 88 45 98 76 63 23
;
run;
data test1;
set test;
array x(6) x1-x6;
do i=1 to dim(x);
xx=x(i);
output;
end;
drop i  x1-x6;
run;

proc freq data=test1 noprint;
table xx /out=test2;
run;

proc sql;
create table test3 as
select t.*,t1.percent/100 as percent format=percent6.2 from test1 t inner join test2 t1 on t.xx=t1.xx;
quit;

proc transpose data=test3 out=test4(drop=_name_) prefix=freq;
by y;
var percent;
run;
data final;
merge test test4;
run;
二维码

扫码加我 拉你入群

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

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

2012-11-7 13:10:10

data test;
input
Y X1 X2 X3 X4 X5 X6;
cards;
1 23 43 63 18 16 87
2 85 45 87 80 56 85
3 76 88 44 35 91 45
4 23 97 57 35 43 16
5 87 68 46 87 45 36
6 88 45 98 76 63 23
;

proc transpose data=test out=test1;
    by  y;
        var x1-x6;
run;
proc sql;
   create table test2 as
      select distinct l.y,tranwrd(_name_,"X","Freq") as _name_,l.col1,r.freq
            from test1 as l
                   left join (select distinct col1,count(*) as freq from test1 group by col1) as r
                   on l.col1=r.col1;
quit;

proc transpose data=test2 out=test3(drop=_name_);
   by y;
   var freq;
run;

data wanted;
    merge test test3;
        by y;
run;
二维码

扫码加我 拉你入群

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

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

相关推荐
栏目导航
热门文章
推荐文章

说点什么

分享

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