楼主: zhongjun04
1482 2

[问答] SAS 求助 [推广有奖]

  • 0关注
  • 0粉丝

小学生

85%

还不是VIP/贵宾

-

威望
0
论坛币
1562 个
通用积分
1.2627
学术水平
0 点
热心指数
0 点
信用等级
0 点
经验
527 点
帖子
10
精华
0
在线时间
9 小时
注册时间
2012-5-14
最后登录
2016-6-1

楼主
zhongjun04 在职认证  发表于 2014-1-8 15:45:14 |AI写论文

+2 论坛币
k人 参与回答

经管之家送您一份

应届毕业生专属福利!

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

经管之家联合CDA

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

感谢您参与论坛问题回答

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

+2 论坛币
如果我有数据如下
F1  F2  F3   F4   M
0    1    0     1    A
1    0    0     0    A
3    8    0     2    B
.
.
.
9    0     7     1   B

F1-F4是数据, M是字母
现在我要看,比如,F1下面,A组中有多少是非0的,B组中多少非0的。
然后得到一个像下面的表格,比如,F1的A中有10个非0,占F1的A的5%。 求助,SAS code忘完了。。。。

A

B

F1

10

5%

F2

F3

F4


二维码

扫码加我 拉你入群

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

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

关键词:code ODE COD 字母

沙发
wwang111 发表于 2014-1-8 16:43:05
我用了几次proc sort, 如果数据量特别大,不建议采用。

data test;
input F1  F2  F3   F4   M $;
cards;
0    1    0     1    A
1    0    0     0    A
3    8    0     2    A
4    0    9     2    A
0    0    0     4    B
3    2    1     4    B
9    0    7     1    B
;
proc sort data=test;
by m;
run;
proc transpose data=test out=test1;
by m;
var f1-f4;
run;
data test2;
set test1;
array num[*] col:;
bign=0;
smalln=0;
do i=1 to dim(num);
if num[i] ne . then bign=bign+1;
if num[i] not in(.,0) then smalln=smalln+1;
end;
n=strip(put(smalln,best.));
pct=strip(put((smalln/bign*100),4.))||'%';
keep m _name_ n pct;
run;
proc sort data=test2;
by _name_;
run;
data test3;
merge test2(where=(m='A') rename=(n=na pct=pcta))
       test2(where=(m='B') rename=(n=nb pct=pctb));
by _name_;
drop m;
run;
data test4;
set test3(keep=_name_ na nb rename=(na=a nb=b))
     test3(keep=_name_ pcta pctb rename=(pcta=a pctb=b));
        by _name_;
        if last._name_ then call missing(_name_);
run;
只有一个罗纳尔多

藤椅
scarfacetony 发表于 2014-1-8 19:41:16
  1. data test;
  2. input F1  F2  F3   F4   M $;
  3. cards;
  4. 0    1    0     1    A
  5. 1    0    0     0    A
  6. 3    8    0     2    A
  7. 4    0    9     2    A
  8. 0    0    0     4    B
  9. 3    2    1     4    B
  10. 9    0    7     1    B
  11. ;
  12. run;

  13. data test1;
  14.         set test;
  15.         array num _numeric_;
  16.         do over num;
  17.         if num=0 then num=.;
  18.         end;
  19. run;

  20. proc sql;
  21.         create table z as
  22.         select *, tf1/t as rf1, tf2/t as rf2, tf3/t as rf3, tf4/t as rf4 from
  23.         (select m, count(F1) as tf1, count(f2) as tf2, count(f3) as tf3, count(f4) as tf4
  24.         from test1 group by m) as a left join
  25.         (select m, count(*) as t
  26.         from test1 group by m) as b on a.m=b.m;
  27. quit;

  28. data z1(keep=m f1--f4);
  29.         set z(rename=(tf1=f1 tf2=f2 tf3=f3 tf4=f4)) z(rename=(rf1=f1 rf2=f2 rf3=f3 rf4=f4));
  30. run;

  31. proc sort data=z1; by m; run;

  32. proc transpose data=z1 out=z2;
  33. run;
复制代码
不是完全按你的格式输出的
看了这个视频,我于是有了进股市的信心!
https://bbs.pinggu.org/thread-2787427-1-1.html

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

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