全部版块 我的主页
论坛 数据科学与人工智能 数据分析与数据科学 SAS专版
2181 3
2010-05-09
悬赏 10 个论坛币 已解决
proc iml;
tyu={1 2 3 4,
   3 4 5 6};
   %let tuo=tyu[1,2];
   %put tuo;
quit;
显示的不是想要的2 ,而是tyu[1,2]。

另外最初想实现是将数据集中每一行作为参数赋给宏函数。
即, data shuju;
length ztl$20 ybl$20 zs$20 ybbl$20;
input ztl$  ybl$ zs$ ybbl$ @@;
cards;
20/20/20 2  3  0.1/0.9/0.1
10/10/10 2  3  0.1/0.9/0.1
;
run;
%macro gio(a=,b=,c=,d=);
……很长很长
%mend;

想让a=20/20/20 ,b=2,c=3,d=0.1/0.9/0.1,……,循环运行宏函数%gio。
请教。

最佳答案

crackman 查看完整内容

data shuju; length ztl$8 ybl$2 zs$2 ybbl$12; obs=_n_; call symput("vars",compress(attrn(open("work.shuju",'i'),'nvars'))); input ztl$ ybl$ zs$ ybbl$ @@; cards; 20/20/20 2 3 0.1/0.9/0.1 10/10/10 2 3 0.1/0.9/0.1 15/15/15 3 4 0.2/0.8/0.3 12/12/12 4 5 0.3/0.5/0.2 ; run; proc transpose data=shuju out=shuju1; var _all_; run; data _null_; set shuju1; nobs=_n_; call symput("nam ...
二维码

扫码加我 拉你入群

请注明:姓名-公司-职位

以便审核进群资格,未注明则拒绝

全部回复
2010-5-9 10:22:26
data shuju;
length ztl$8 ybl$2 zs$2 ybbl$12;
obs=_n_;
call symput("vars",compress(attrn(open("work.shuju",'i'),'nvars')));
input ztl$  ybl$ zs$ ybbl$ @@;
cards;
20/20/20 2  3  0.1/0.9/0.1
10/10/10 2  3  0.1/0.9/0.1
15/15/15 3  4  0.2/0.8/0.3
12/12/12 4  5  0.3/0.5/0.2
;
run;
proc transpose data=shuju out=shuju1;
var _all_;
run;
data _null_;
set shuju1;
nobs=_n_;
call symput("name"||left(nobs),_name_);
run;
%macro a(row);
data _null_;
set shuju;
%do i=1 %to %eval(&vars.-1);
call symput("n"||compress(&i.)||left(obs),&&name&i.);
%end;
%put &&n1&row. &&n2&row. &&n3&row. &&n4&row.;
run;
%mend a;
%a(1);
%a(2);
二维码

扫码加我 拉你入群

请注明:姓名-公司-职位

以便审核进群资格,未注明则拒绝

2010-5-9 12:38:16
n11 n21  n31 n41
n12 n22  n32 n42
n13 n23 n33 n43
n14 n24 n34 n44
这个是宏变量矩阵
二维码

扫码加我 拉你入群

请注明:姓名-公司-职位

以便审核进群资格,未注明则拒绝

2010-5-12 15:48:53
其实我的水平有限,没怎么看懂你的程序,不过还是有提示作用,我用自己能理解的方式把程序编出来了。
二维码

扫码加我 拉你入群

请注明:姓名-公司-职位

以便审核进群资格,未注明则拒绝

相关推荐
栏目导航
热门文章
推荐文章

说点什么

分享

扫码加好友,拉您进群
各岗位、行业、专业交流群