全部版块 我的主页
论坛 数据科学与人工智能 数据分析与数据科学 SAS专版
6902 7
2013-05-12
求助各位一个求和的问题~~>.<~~

SAS中有很多变量很多观测,变量中有正有负,对于每一个观测,我想求所正的变量的和以及所有负的变量的和,类似于excel中的sumif函数,请问要如何实现呢?

谢谢!!
二维码

扫码加我 拉你入群

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

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

全部回复
2013-5-12 07:57:41
data test;
   array x x1-x8;
     do  i= 1 to 8;
     seed = 1000+i;
     x(i) = int(rannor(seed)*10);
     end;
   drop seed i;
run;

data result;
  array x x1-x8;
  set test;
  positive_sum=0;
  negative_sum=0;
  do i = 1 to dim(x);
       if x(i) >0 then  positive_sum + x(i);  
       if x(i) <0 then  negative_sum + x(i);  
  end;
  drop i;
run;
二维码

扫码加我 拉你入群

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

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

2013-5-12 09:13:35
yongyitian 发表于 2013-5-12 07:57
data test;
   array x x1-x8;
     do  i= 1 to 8;
谢谢,学习了。
二维码

扫码加我 拉你入群

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

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

2013-5-13 08:43:16
加个虚拟变量,指定变量大于0则等于1,否则等于0
然后用proc means求sum的时候加个by变量就好了
二维码

扫码加我 拉你入群

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

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

2013-5-13 10:26:01
I wish there were a sumif function too.
if just summing up by +/-, no new dummy variables necessary
To do it in PROC MEANS, define a format first
复制代码
The same can be accomplished in PROC SQL with 'GROUP BY sign(x)', where x is the variable to be tallied.
二维码

扫码加我 拉你入群

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

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

2013-5-13 15:40:28
yongyitian 发表于 2013-5-12 07:57
data test;
   array x x1-x8;
     do  i= 1 to 8;
谢谢!之前一直对数组操作不熟悉啊:P
二维码

扫码加我 拉你入群

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

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

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

说点什么

分享

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