作者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/cn.aspx?n=bbs/Statistics/M.1466087571.A.4AC.html
1F:推 edsmom: 谢谢t大,我试看看,再上来回报 06/17 11:07