将值分配给相关列sas宏

时间:2014-03-04 08:47:19

标签: macros sas

NUM ...名称... ...成本AB ... ... AC ...广告AE

1个..........交流....... 40
2个.......... AB ....... 10个
3 .......... AE ....... 30
4 .......... ad ....... 20

嗨,我是sas宏的新手,我需要帮助将相关的成本值分配给相应的列。

你能帮帮我吗?

NUM ...名称... ...成本AB ... ... AC ...广告AE

1个........交流......... 40 .......... 40个
2个........ AB ......... 10 .... 10个
3 ........ ae ......... 30 ........................ 30

4 ........ ad ......... 20 ................. 20

3 个答案:

答案 0 :(得分:1)

从初始数据集中删除ab,ac,ad,ae ...列 然后看看proc转置,它正是你所需要的:http://support.sas.com/documentation/cdl/en/proc/65145/HTML/default/viewer.htm#p1r2tjnp8ewe3sn1acnpnrs3xbad.htm

答案 1 :(得分:0)

快速搜索SAS程序会导致PROC TRANSPOSE https://support.sas.com/documentation/cdl/en/proc/61895/HTML/default/viewer.htm#transpose-overview.htm

网上还有很多论文详细介绍了如何使用PROC TRANSPOSE的许多例子。

proc tranpose data=in out=out ;
  by num ;
  id name ;
  var cost ;
run ;

答案 2 :(得分:0)

如果由于某种原因你需要通过datastep来完成它,那么请查看数组而不是宏....

类似的东西:

array _col(*) ab ac ad ae; 
  do i=1 to dim(_col); 
     if vname(_col)=name then _col(i)=cost; 
  end; 

这是一个很好的资源: https://support.sas.com/resources/papers/97529_Using_Arrays_in_SAS_Programming.pdf