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
答案 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