作者tew (咖啡王子)
看板Statistics
標題Re: [程式] SAS call symput如何不要只看最後一列
時間Thu Jun 16 22:32:48 2016
我嘗試這樣寫了
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://webptt.com/m.aspx?n=bbs/Statistics/M.1466087571.A.4AC.html
1F:推 edsmom: 謝謝t大,我試看看,再上來回報 06/17 11:07