SAS中文论坛

 找回密码
 立即注册

扫一扫,访问微社区

查看: 882|回复: 2
打印 上一主题 下一主题

请问在sas中如何访问数据集的成员变量?

[复制链接]

49

主题

76

帖子

1462

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
1462
楼主
 楼主| 发表于 2006-6-20 13:15:16 | 只看该作者

请问在sas中如何访问数据集的成员变量?

比如一个sas数据集只有一个观测,我想在一个循环中把这个数据集的一个成员变量与一个数比较。请问怎样才能实现?多谢了!

下面是我的程序:(对数据集baby.alll2003前i个观测进行线性回归,把计算的统计量输出到est&i数据集中,其中有变量_RSQ_,它表示Rsquare)
%macro ToRegFirstI(i);
data toReg&i;
set baby.alll2003(obs=&i);
keep lr lu;
run;
proc reg data=toReg&i outest=est&i;
model lr=lu / selection=rsquare;
run;
%mend;

%macro analysis(first,last);
%let max=0;
%let k=0;
%do i=&first %to &last;
%ToRegFirstI(&i);
%if est&i._RSQ_>&max %then
%do;
%let max=est&i._RSQ_;
%let k=&i;
%end;
%end;
%put k=&k maxRsquare=&max;
%mend;

%analysis(100,200);

但是这样运行出来的结果在log窗口显示为k=200 maxRsquare=est200_RSQ_
这是怎么一回事呢?
回复 支持 反对

使用道具 举报

49

主题

76

帖子

1462

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
1462
沙发
 楼主| 发表于 2006-6-20 21:23:41 | 只看该作者

re

In %if est&i._RSQ_>&max %then 中 est&i._RSQ_ is not 变量, is a string.
if est&i._RSQ_ is 变量, it should be put in IF....THEN DO...END block (not %if....%then.) to another data statement.
回复 支持 反对

使用道具 举报

49

主题

76

帖子

1462

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
1462
板凳
 楼主| 发表于 2006-6-23 11:08:05 | 只看该作者

re

我按你说的把程序修改了下,但结果还是不行,不知道是怎么回事?麻烦你能说的清楚些,多谢了!
程序如下:
%macro ToRegFirstI(i);
data toReg&i;
set baby.alll2003(obs=&i);
keep lr lu;
run;
proc reg data=toReg&i outest=est&i;
model lr=lu / selection=rsquare;
run;
%mend;

%macro analysis(first,last);
%let max=0;
%let k=0;
%do i=&first %to &last;
%ToRegFirstI(&i);
data _NULL_;
set est&i;
if _RSQ_>&max then
do;
%let max=_RSQ_;
%let k=&i;
end;
run;
%end;
%put k=&k maxRsquare=&max;
%mend;

%analysis(150,200);
回复 支持 反对

使用道具 举报

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

本版积分规则

QQ|小黑屋|手机版|Archiver|SAS中文论坛  

GMT+8, 2025-6-10 05:47 , Processed in 0.072393 second(s), 21 queries .

Powered by Discuz! X3.2

© 2001-2013 Comsenz Inc.

快速回复 返回顶部 返回列表