楼主: bzmctj
2232 3

如何将矩阵的值赋给宏变量? [推广有奖]

  • 0关注
  • 0粉丝

已卖:70份资源

本科生

20%

还不是VIP/贵宾

-

威望
0
论坛币
180 个
通用积分
0.9149
学术水平
0 点
热心指数
0 点
信用等级
0 点
经验
259 点
帖子
20
精华
0
在线时间
118 小时
注册时间
2009-2-22
最后登录
2025-4-14

楼主
bzmctj 发表于 2010-5-9 10:22:25 |AI写论文
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 ...
关键词:length Macro cards Input card 变量 矩阵

本帖被以下文库推荐

沙发
crackman 发表于 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);

藤椅
crackman 发表于 2010-5-9 12:38:16
n11 n21  n31 n41
n12 n22  n32 n42
n13 n23 n33 n43
n14 n24 n34 n44
这个是宏变量矩阵

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

您需要登录后才可以回帖 登录 | 我要注册

本版微信群
加好友,备注cda
拉您进交流群
GMT+8, 2025-12-25 09:11