全部版块 我的主页
论坛 数据科学与人工智能 数据分析与数据科学 SAS专版
2766 2
2009-07-29
在pro iml中编程序处理的数据集如以下这种情况:
x  y   z   flag
1  1  2      1
2   4  2     1
3   2  1     1
3   2   3    0
2   1  3     0
1  1  2       2
2   4  2      2
3   2  1      2
如上所示,现要对flag=0,1和2的数据分别求和,在对flag=0,1和2的数据和相乘求积,请问应该如何可以做到呢?谢谢大家
二维码

扫码加我 拉你入群

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

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

全部回复
2009-7-29 11:58:31
proc iml;                                                                                                                              
m=                                                                                                                                      
{1  1  2   1,                                                                                                                           
2  4  2   1,                                                                                                                           
3  2  1   1,                                                                                                                           
3  2  3   0,                                                                                                                           
2  1  3   0,                                                                                                                           
1  1  2   2,                                                                                                                           
2  4  2   2,                                                                                                                           
3  2  1   2};                                                                                                                          
flag=unique(m[,4]);                                                                                                                     
sum=j(ncol(flag),4,0);                                                                                                                  
do i=1 to ncol(flag);                                                                                                                  
   x=m#repeat(m[,4]=flag[i],1,4);                                                                                                      
   sum[i,1:3]=x[+,1:3];                                                                                                                 
   sum[i,4]=flag[i];                                                                                                                    
end;                                                                                                                                    
prod=sum[#,1:3];                                                                                                                        
print sum;                                                                                                                              
print prod;                                                                                                                             
quit;

结果:
      SUM

5         3         6         0
6         7         5         1
6         7         5         2

             PROD

180       147       150
二维码

扫码加我 拉你入群

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

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

2009-7-29 12:14:06
你是哪个 泉州-彬仔 吧?跑这来了 昨天那么问你也不说
二维码

扫码加我 拉你入群

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

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

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

说点什么

分享

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