SAS中文论坛

 找回密码
 立即注册

扫一扫,访问微社区

查看: 828|回复: 5
打印 上一主题 下一主题

请高手帮忙!谢谢!

[复制链接]

49

主题

76

帖子

1462

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
1462
楼主
 楼主| 发表于 2004-10-5 19:15:46 | 只看该作者

请高手帮忙!谢谢!

data aa;
input x y@@;
cards;
1        0
2        0
3        0
4        0
5        0
5.5        0
6        1
7        1
8        1
9        1
10        1
11        1
;
proc logistic desc;
model y=x;
run;
我想把5.5依次替换成6.0,6.05,6.10,6.15,6.20,8.0,用宏可以实现吗?
请求帮助!谢谢!
回复 支持 反对

使用道具 举报

49

主题

76

帖子

1462

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
1462
沙发
 楼主| 发表于 2004-10-6 00:47:58 | 只看该作者

try it.

Of course it can be solved with macro. like codes below.

data aa;
input x y@@;
cards;
1 0
2 0
3 0
4 0
5 0
5.5 0
6 1
7 1
8 1
9 1
10 1
11 1
;
run;
%macro logst;
%let val=6.0/6.05/6.10/6.15/6.20/8.0;
%do i=1 %to 6;
%let value=%scan(&val,&i,'/');
title "result for values of &value. for variable x.";
%put &value;
data bb;
  set aa;
  if x=5.5 then x=&value;
run;
proc logistic desc;
model y=x;
run;
quit;
%end;
title;
%mend;
%logst;

hope it can helps.
回复 支持 反对

使用道具 举报

49

主题

76

帖子

1462

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
1462
板凳
 楼主| 发表于 2004-10-6 09:58:25 | 只看该作者

谢谢

谢谢!
是否可以再简单一些!
回复 支持 反对

使用道具 举报

49

主题

76

帖子

1462

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
1462
地板
 楼主| 发表于 2004-10-23 12:23:38 | 只看该作者

re

可以用array做。
%macro test;

%let numtorplace=6;

%do j =1 %to &numtorplace;
data bb&j;
set aa;
array  replace{&numtorplace} (6.0,6.05,6.10,6.15,6.20,8.0);  
if x=5.5 then x = replace(&j);  
drop replace1-replace8;
run;
%end;
%mend test;
%test;
回复 支持 反对

使用道具 举报

49

主题

76

帖子

1462

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
1462
5#
 楼主| 发表于 2004-10-23 14:17:07 | 只看该作者

出错

有误!运行出错!
回复 支持 反对

使用道具 举报

49

主题

76

帖子

1462

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
1462
6#
 楼主| 发表于 2004-10-24 23:20:59 | 只看该作者

re

给你的只是data step。你要用proc要把它放在macro里面。你想要的macro应该是:

data aa;
input x y@@;
cards;
1 0
2 0
3 0
4 0
5 0
5.5 0
6 1
7 1
8 1
9 1
10 1
11 1
;

%macro test;

%let numtorplace=6;

%do j =1 %to &numtorplace;
data bb&j;
set aa;
array  replace{&numtorplace} (6.0,6.05,6.10,6.15,6.20,8.0);  
if x=5.5 then x = replace(&j);  
drop i replace1-replace8;
run;

proc logistic desc;
model y=x;
run;

%end;
%mend test;
%test;
回复 支持 反对

使用道具 举报

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

本版积分规则

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

GMT+8, 2025-11-5 06:08 , Processed in 0.120436 second(s), 19 queries .

Powered by Discuz! X3.2

© 2001-2013 Comsenz Inc.

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