SAS中文论坛

 找回密码
 立即注册

扫一扫,访问微社区

查看: 774|回复: 3
打印 上一主题 下一主题

求教一段sas程序的问题

[复制链接]

49

主题

76

帖子

1462

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
1462
楼主
 楼主| 发表于 2010-11-19 23:16:51 | 只看该作者

求教一段sas程序的问题

程序跑不通,特来求教
希望实现的目的是把一条记录重复成多条记录
具体如下,有数据集a,有两个变量a和b
a  b
1  1.1
2  0.9
3  0.8
4  0.7
5  1.2
6  1.4
希望把数据集a中的每一条记录重复成多条记录,至于是“多少条”,取决于“变量b”和“0”的差值,例如第一条记录b=1.1,我就希望把该记录重复11次(从0到1.1,步长0.1),
同理第二条记录,b=0.9,需要重复9次(从0到0.9,步长0.1)
于是编程如下,但是遇到一个问题,当b=0.8,0.9或1.1时,程序运行有问题(0.8时记录重复9次,0.9时重复10次),b为其他值的时候就没有问题,很奇怪。
data a;
input a b;
cards;
1 1.1
2 0.9
3 0.8
4 0.7
5 1.2
6 1.4
;
run;

data b;
set a;
do i=0 to 1.5 by 0.1;
if b>i then do;
d=0;
end;
else do;d=1;output;leave;end;
put a b i d;
output;
end;
run;
希望版上高手帮我解析一下问题出在哪里。
我相信各位肯定会想出比这个简单的方法来可以实现相同目的,非常乐意学习,不过我还是想了解一下自己这段程序为什么出错了。。。
先谢谢啦
回复 支持 反对

使用道具 举报

49

主题

76

帖子

1462

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
1462
沙发
 楼主| 发表于 2010-11-20 00:52:30 | 只看该作者

Re: 求教一段sas程序的问题

笑翻了,比猪头还糊涂,从0到1.1,步长0.1,是一共重复11次吗?
至于浮点数比较的问题,坛子里的各位大师回答过好几次,原因见
<!-- m --><a class="postlink" href="http://www.nesug.org/Proceedings/nesug08/ff/ff07.pdf">http://www.nesug.org/Proceedings/nesug08/ff/ff07.pdf</a><!-- m -->

你的程序已经写得够好啦,猪头试了下连十行都省不下来。
[code:2re0sk5h]
data b;
        set a;
        do i=0 by 0&#46;1 until (d);
                d = (round(i,&#46;1) &gt;= round(b,&#46;1));
                output;
        end;
run;
[/code:2re0sk5h]
回复 支持 反对

使用道具 举报

49

主题

76

帖子

1462

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
1462
板凳
 楼主| 发表于 2010-11-20 09:47:20 | 只看该作者

Re: 求教一段sas程序的问题

有赠品? 好好研究下 <!-- s:D --><img src="{SMILIES_PATH}/icon_biggrin.gif" alt=":D" title="Very Happy" /><!-- s:D -->
回复 支持 反对

使用道具 举报

49

主题

76

帖子

1462

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
1462
地板
 楼主| 发表于 2010-11-20 14:20:35 | 只看该作者

Re: 求教一段sas程序的问题

to 死猪头
3ks
原来如此啊~~
你的程序写的简单多了,决定用你的~
另外,更正一下,0到1.1,步长.1,是重复12次, 哈哈。
回复 支持 反对

使用道具 举报

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

本版积分规则

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

GMT+8, 2026-2-3 18:33 , Processed in 0.068707 second(s), 20 queries .

Powered by Discuz! X3.2

© 2001-2013 Comsenz Inc.

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