SAS中文论坛
标题:
跟crackman读SAS程序(84)--多变量累加汇总
[打印本页]
作者:
shiyiming
时间:
2010-10-28 14:13
标题:
跟crackman读SAS程序(84)--多变量累加汇总
From crackman's blog on Baidu
<p>n a b c d<br>
-5 0.00268044 0.036789181 -0.002854454 0.004422855<br>
-4 0.002120412 -0.005662624 0.001201962 0.004942051<br>
-3 0.009090236 0.004368504 0.005967381 -0.00132433<br>
-2 0.007586509 0.000648665 0.004384007 -0.003327931<br>
-1 0.002629517 -0.009863102 -0.000134453 -0.008498293<br>
0 0.246456 -0.24381 0.224689 -0.23203<br>
1 0.008185922 -0.027509529 -0.001547285 -0.015410529<br>
data:A 要求a, b, c, d四列分别依次累加, 例如新得到的a 列应为<br>
new<br>
0.00268044<br>
0.004800852<br>
0.013891088<br>
0.021477597<br>
0.024107114<br>
<br>
proc sort data=a;<br>
by n; run;<br>
data b; set a;<br>
retain new 0;<br>
new+bullu;run;<br>
请教我想四列同时操作, 如何做? <br>
问题来自:<a href="http://mysas.net/forum/viewtopic.php?f=4&t=6895"><!-- m --><a class="postlink" href="http://mysas.net/forum/viewtopic.php?f=4&t=6895">http://mysas.net/forum/viewtopic.php?f=4&t=6895</a><!-- m --></a></p>
<p>答案:</p>
<p>DATA STEP:</p>
<p><font face="NSimsun">data b;<br>
set a;<br>
array ar_a(*) a b c d;<br>
array ar_b(*) as bs cs ds;<br>
do i=1 to dim(ar_a);<br>
ar_b(i)+ar_a(i);<br>
end;<br>
drop i;<br>
run;</font><br>
在DATA STEP里面,利用了DO LOOP以及数组,将每一个变量的结果对应放在数组中,其这两个数组的之间的桥梁就是下标变量I。</p>
<p>SQL:</p>
<p>proc sql;</p>
<p>select sum(a) as sum_a,sum(b) as sum_b,sum(c) as sum_c,sum(d) as sum_d from a;</p>
<p>quit;</p>
<p>SQL与DATA不的效率差异是有,但是不要过分去追求效率,特别是当数据集的观测数比较少的时候,SQL也许比DATA步效率低,但是效果肯定比DATA步好。</p> <a href="http://hi.baidu.com/crack%5Fman/blog/item/d62ba0e83e3fd32863d09f51.html">阅读全文</a>
<br/><b>类别:</b><a href="http://hi.baidu.com/crack%5Fman/blog/category/%B8%FAcrackman%B6%C1sas%B3%CC%D0%F2">跟crackman读sas程序</a> <a href="http://hi.baidu.com/crack%5Fman/blog/item/d62ba0e83e3fd32863d09f51.html#comment">查看评论</a>
欢迎光临 SAS中文论坛 (https://mysas.net/forum/)
Powered by Discuz! X3.2