作者tew (咖啡王子)
站内Statistics
标题Re: [问题] SAS marco如何表示?
时间Fri May 15 12:53:57 2015
※ 引述《sheiswe (no matter)》之铭言:
: 最近需要写一个算式~
: 算出222B公司的权重
: 算式是:
: 222B公司/横向加总横向的其他公司(不含222B自己)
: 我知道算式不难~但实在想不出要如何用marco的方式表现,跪求解惑。
: 横向纵向都是公司交易表格如下 (百万):
: 公司 111A 222B 333C 444D
: 111A 12,000 空 100 100
: 222B 5,000 101 121 905
: 333C 空 12 15 80
: 555D 2,006 1,201 空 75
: 希望得到的结果是
: %marco xxx(公司);
: ..
: %mend;
: %xxx(222B);
: 就能得到222B这间公司的权重结果。
: 再次跪求,谢谢。
: 谢谢M大,我补上更详细的说明。
data a ;
input code $ firm1 firm2 firm3 firm4 ;
datalines ;
111A 12000 . 100 100
222B 5000 101 121 905
333C . 12 15 80
555D 2006 1201 . 75
;
run;
proc transpose data=a out=a;
var firm1-firm4;
by code;
run;
data a;
set a;
if _name_='firm1' then _name_='111A';
if _name_='firm2' then _name_='222B';
if _name_='firm3' then _name_='333C';
if _name_='firm4' then _name_='555D';
run;
proc means noprint data=a;
var col1;
by code;
output out=b(drop=_type_ _freq_) sum=sum;
run;
data a;
set a;
if code=_name_;
run;
data a;
merge a b;by code;
ratio=col1/(sum-col1);
run;
你的公司命名太差 不可能用数字开头
如果不是用数字开头 命名那部分可以省略 你的code 会 完美的等於_name_
--
--
※ 发信站: 批踢踢实业坊(ptt.cc), 来自: 111.1.127.204
※ 文章网址: https://webptt.com/cn.aspx?n=bbs/Statistics/M.1431665640.A.918.html
1F:→ tew: 如果不执着於命名 那 其实是一个完美矩阵 也是可以写的 05/15 12:58
2F:→ tew: 就是处理对角线而已 05/15 12:58