Re: [程式] SAS call symput如何不要只看最後一列

看板Statistics作者 (咖啡王子)時間9年前 (2016/06/16 22:32), 編輯推噓1(100)
留言1則, 1人參與, 最新討論串2/3 (看更多)
我嘗試這樣寫了 data a; input ID Q1 Q2 Q3 string $20.; datalines; 1 3 1 2 sum(Q2,Q3) 2 1 2 3 sum(Q1,Q2,Q3) 3 4 1 3 sum(Q1,Q2) ; run; %macro a; proc delete data=compute; quit; %do i=1 %to 3; data a; set a; if _n_=&i then do; call symput('sum',string); end; run; data b; set a; score=∑ if _n_=&i then output; keep id score; run; proc append base=compute data=b; quit; proc delete data=b; quit; %end; run; %mend; %a; ※ 引述《》之銘言: : [程式問題]: : call symput : [軟體熟悉度]: : 中等 : [問題敘述]: : 請問我有一組數據如下,每個ID各有Q1~Q3三個變數,欄位string說明要把 : 哪幾個變數相加 : ID Q1 Q2 Q3 string : 1 3 1 2 sum(Q2,Q3) : 2 1 2 3 sum(Q1,Q2,Q3) : 3 4 1 3 sum(Q1,Q2) : 現在希望增加一欄位score,依照string的指示來加總可以得到如下的值 : ID score : 1 3 : 2 6 : 3 5 : 目前利用call symput程式如下,但會變成每個人的score都統一以最後一人(ID3)的 : string為準,即每個人的score都是Q1+Q2 : Data compute; : set data1; : call symput('sum', string); : score = ∑ : Run; : ID score(錯) : 1 4 : 2 3 : 3 5 : 想請板上高手指點一下,該怎麼修正? 謝謝 : ※ 編輯: edsmom (211.76.175.169), 06/16/2016 13:59:39 -- -- ※ 發信站: 批踢踢實業坊(ptt.cc), 來自: 36.49.3.196 ※ 文章網址: https://www.ptt.cc/bbs/Statistics/M.1466087571.A.4AC.html

06/17 11:07, , 1F
謝謝t大,我試看看,再上來回報
06/17 11:07, 1F
文章代碼(AID): #1NOhYJIi (Statistics)
文章代碼(AID): #1NOhYJIi (Statistics)