楼主: lihuiyingdudu
1335 5

计算变量中数值并生成表格 [推广有奖]

  • 0关注
  • 0粉丝

已卖:58份资源

大专生

78%

还不是VIP/贵宾

-

威望
0
论坛币
86 个
通用积分
0
学术水平
1 点
热心指数
1 点
信用等级
1 点
经验
1315 点
帖子
30
精华
0
在线时间
69 小时
注册时间
2008-2-13
最后登录
2014-12-12

楼主
lihuiyingdudu 发表于 2014-3-26 14:34:16 来自手机 |AI写论文
5论坛币
Data A 中有10个变量,比如是A,B,C....J,每个变量的值是1或0,
A B C ...J
0 1    0    0
1 0    1    0
...
0  1   0    0

我想得到的是这样一个output
Var. count
A      5
B      4
C      5
.
.
.
J       7
第一列是每个变量名,第二列是Count 每个变量有多少个1
请教怎么能简单方便的实现,多谢!

最佳答案

wwang111 查看完整内容

proc transpose data=a out=b(rename=(_name_=var)); var _numeric_; run; data wanted; set b; count=sum(of col:); keep var count; run;
关键词:output Count outpu Data VaR

沙发
wwang111 发表于 2014-3-26 14:34:17
proc transpose data=a out=b(rename=(_name_=var));
var _numeric_;
run;
data wanted;
set b;
count=sum(of col:);
keep var count;
run;
只有一个罗纳尔多

藤椅
lihuiyingdudu 发表于 2014-3-27 10:35:35 来自手机
It works! Thanks!怎么发钱呢?

板凳
z_shousi 发表于 2014-3-27 15:57:41
wwang111 发表于 2014-3-26 14:45
proc transpose data=a out=b(rename=(_name_=var));
var _numeric_;
run;
Thx,学习了一个反转 proc transpose.

报纸
learsaas 发表于 2014-3-27 20:52:15
  1. data result(keep=var count);
  2.         set a end=last;
  3.         array rr_num{10} _numeric_;
  4.         array rr_count10} _temporary_;
  5.         length var $20 count 8;
  6.         do i=1 to dim(rr_num);
  7.                 rr_count{i}+(rr_num(i)=1);
  8.         end;
  9.         if last then do i=1 to dim(rr_num);
  10.                 var=vname(rr_num(i));
  11.                 count=rr_count(i);
  12.                 output;
  13.         end;
  14. run;
复制代码

地板
bobguy 发表于 2014-3-29 09:34:47
wwang111 发表于 2014-3-26 14:45
proc transpose data=a out=b(rename=(_name_=var));
var _numeric_;
run;
First doing the sum and second transposing the results. This will be more efficient.

You can do it within ONE data step.


data t1;
array x(*) a b c d e f g h j k;
do _i_=1 to  20;
   do _j_=1 to dim(x);
     x(_j_)=rannor(123)>0;
   end;
output;
end;
keep a b c d e f g h j k;
run;

data t2;
  set t1 end=end;
  array x(*) a b c d e f g h j k;
  array sx(*) sa sb sc sd se sf sg sh sj sk;
  retain sa sb sc sd se sf sg sh sj sk;
   do _j_=1 to dim(x);
     sx(_j_)+x(_j_);
   end;
   if end then do;
    do _j_=1 to dim(x);
     name=vname(x(_j_));
         count=sx(_j_);
         output;
   end;
   end;
   keep name count;
run;

proc print;run;



proc means data=t1 noprint;
var a b c d e f g h j k;
output out=sum sum=;
run;

proc transpose data=sum out=t3(rename=(_name_=name col1=count));
var a b c d e f g h j k;
run;

proc print;run;

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

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