看板 Statistics 關於我們 聯絡資訊
※ 引述《》之銘言: : [程式問題]: : 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 data data1; length ID Q1 Q2 Q3 8. string $15; input ID Q1 Q2 Q3 string; cards; 1 3 1 2 sum(Q2,Q3) 2 1 2 3 sum(Q1,Q2,Q3) 3 4 1 3 sum(Q1,Q2) 4 2 2 3 sum(Q1,Q2) 5 1 3 2 sum(Q1,Q2,Q3) ; run; %macro aa; /*列出加總的總類*/ proc sql noprint; create table string as select distinct string from data1; /*計算加總的總類的個數*/ select count(*) into: n_string from string; quit; data string;set string; n=_n_; run; data compute;delete; %do i=1 %to &n_string.; proc sql noprint; select string into:sum from string where n=&i.; data temp;set data1; /*只要string符合該加總的類別, 即進行該形式的加總*/ if string="&sum"; score =∑ run; data compute;set compute temp;run; %end; %mend; %aa; 你的data應該是有大量id, 試看看能否直接適用各種情形~~~ -- ※ 發信站: 批踢踢實業坊(ptt.cc), 來自: 111.250.158.190 ※ 文章網址: https://www.ptt.cc/bbs/Statistics/M.1466090865.A.14C.html
edsmom: 謝謝i大,我試看看,再上來回報 06/17 11:08
edsmom: 嗯,對。我有大量ID, 而且實際上有Q1~Q60個變數~ 06/17 11:10