Re: [程式] SAS marco如何表示?

看板Statistics作者 (咖啡王子)時間9年前 (2015/05/15 12:54), 編輯推噓0(002)
留言2則, 1人參與, 最新討論串4/4 (看更多)
※ 引述《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://www.ptt.cc/bbs/Statistics/M.1431665640.A.918.html

05/15 12:58, , 1F
如果不執著於命名 那 其實是一個完美矩陣 也是可以寫的
05/15 12:58, 1F

05/15 12:58, , 2F
就是處理對角線而已
05/15 12:58, 2F
文章代碼(AID): #1LLNleaO (Statistics)
文章代碼(AID): #1LLNleaO (Statistics)