程序跑不通,特来求教
希望实现的目的是把一条记录重复成多条记录
具体如下,有数据集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;
希望版上高手帮我解析一下问题出在哪里。
我相信各位肯定会想出比这个简单的方法来可以实现相同目的,非常乐意学习,不过我还是想了解一下自己这段程序为什么出错了。。。
先谢谢啦
笑翻了,比猪头还糊涂,从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.1 until (d);
d = (round(i,.1) >= round(b,.1));
output;
end;
run;
[/code:2re0sk5h]