SAS中文论坛

 找回密码
 立即注册

扫一扫,访问微社区

查看: 1136|回复: 6
打印 上一主题 下一主题

急!求一道sas编程题程序!

[复制链接]

49

主题

76

帖子

1462

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
1462
楼主
 楼主| 发表于 2005-12-19 14:57:19 | 只看该作者

急!求一道sas编程题程序!

[color=red:0da8e]下面这道题我试了好些时间,总是得不出应有的结果,请高手帮帮忙呀!
编制程序:
六个变量id d1-d5,数据节选如下:
1 2 7 23 100 1000
2 3 33 54 56 1000
3 . 4 6 44 100
要求:如果相邻数据之差小于等于7,则置为缺失,数据结果应如下:
1 . . 23 100 1000
2 3 33 . . 1000
3 . . . 44 100
注:最前面一列的1 2 3是id号,不用处理的数据。
请各位多多指教呀[/color:0da8e]
回复 支持 反对

使用道具 举报

49

主题

76

帖子

1462

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
1462
沙发
 楼主| 发表于 2005-12-19 17:23:22 | 只看该作者

try this!

data a;
input id d1-d5;
cards;
1 2 7 23 100 1000
2 3 33 54 56 1000
3 . 4 6 44 100
;
run;

data b;
set a;
array d(5) d1-d5;
        do i=lbound(d) to (hbound(d)-1);
                x=abs(d(i)-d(i+1));
                if x<=7 and x^=. then do;
                        d(i)=.; d(i+1)=.; end;
        end;
run;

enjoy it! <!-- s:D --><img src="{SMILIES_PATH}/icon_biggrin.gif" alt=":D" title="Very Happy" /><!-- s:D -->
回复 支持 反对

使用道具 举报

49

主题

76

帖子

1462

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
1462
板凳
 楼主| 发表于 2005-12-19 17:46:19 | 只看该作者

删了.

楼上的解法,无法解决连续三个相差都小于7的情况.
回复 支持 反对

使用道具 举报

49

主题

76

帖子

1462

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
1462
地板
 楼主| 发表于 2005-12-19 18:35:53 | 只看该作者

谢谢bigbang!

谢谢bigbang的大力支持!
只是老师给我们这题的时候还没跟我们讲过bound()函数,还有没有别的什么好的方法?
再次感谢!
<!-- s:) --><img src="{SMILIES_PATH}/icon_smile.gif" alt=":)" title="Smile" /><!-- s:) -->  <!-- s:D --><img src="{SMILIES_PATH}/icon_biggrin.gif" alt=":D" title="Very Happy" /><!-- s:D -->  <!-- s:lol: --><img src="{SMILIES_PATH}/icon_lol.gif" alt=":lol:" title="Laughing" /><!-- s:lol: -->
回复 支持 反对

使用道具 举报

49

主题

76

帖子

1462

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
1462
5#
 楼主| 发表于 2005-12-19 18:37:38 | 只看该作者

to ahuige

您有何高见?可否指点迷津?谢谢!
回复 支持 反对

使用道具 举报

49

主题

76

帖子

1462

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
1462
6#
 楼主| 发表于 2005-12-19 19:04:27 | 只看该作者

to ahuige

呵呵,看到您的高见了,不错。谢谢! <!-- s:lol: --><img src="{SMILIES_PATH}/icon_lol.gif" alt=":lol:" title="Laughing" /><!-- s:lol: -->  <!-- s:D --><img src="{SMILIES_PATH}/icon_biggrin.gif" alt=":D" title="Very Happy" /><!-- s:D -->  <!-- s:) --><img src="{SMILIES_PATH}/icon_smile.gif" alt=":)" title="Smile" /><!-- s:) -->
回复 支持 反对

使用道具 举报

49

主题

76

帖子

1462

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
1462
7#
 楼主| 发表于 2005-12-20 14:05:12 | 只看该作者

re:

ahuige, you are right. I made some corrections.

data a;
input id d1-d5;
cards;
1 2 7 23 100 1000
2 3 33 54 56 1000
3 . 4 6 44 100
4 1 2 3 44 121
;
run;

data b;
set a;
array d(*) d1-d5;
array s(*) s1-s4;
do i=1 to dim(s);
        s(i)=abs(d(i)-d(i+1));
end;
do i=1 to dim(s);
if s(i)&lt;=7 and s(i)^=. then do;
d(i)=.; d(i+1)=.; end;
end;
run;
回复 支持 反对

使用道具 举报

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

本版积分规则

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

GMT+8, 2025-6-9 15:55 , Processed in 0.072762 second(s), 22 queries .

Powered by Discuz! X3.2

© 2001-2013 Comsenz Inc.

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