SAS中文论坛

标题: 求助:一个SAS作业不会做,求各位帮帮忙 [打印本页]

作者: shiyiming    时间: 2008-9-18 20:58
标题: 求助:一个SAS作业不会做,求各位帮帮忙
问题是这样的
我们要分析一组数据
是一个人扔1000次骰子的结果
如果扔了一个五,然后再扔一个六
或者扔了一个六,再扔一个六
就重新算起
首先
data work.dice;
drop i; call streaminit(42);
do i =1 to 10000; x = ceil(rand('UNIFORM')*6);
output;
end;
run;
这样SAS就会生成一个扔了1000次的结果
然后要求我们从 work.dice里面提取两个文件,一个是work.56 另一个是work.66
里面只有一个variable叫NumRolls,表明每次扔出 56 或 66之前一共扔了多少次
如果我扔了8次
分别是3,5,6,2,2,2,5,6
那么在work.56里的NumRolls的第一个数应该是3,第二个数是5

实在是不懂怎么做
求各位大哥帮帮忙
作者: shiyiming    时间: 2008-9-19 08:01
标题: Re: 求阻:一个SAS作业不会做,求各位帮帮忙
求求各位大虾路见不平,拔刀相助一下
这个作业我根据我们老师已经教了的知识完全做不来
主要是不知道怎么标示到了5,6或者6,6的时候就要停下来
求各位帮帮忙
感激不尽
作者: shiyiming    时间: 2008-9-22 11:33
标题: Re: 求助:一个SAS作业不会做,求各位帮帮忙
其实以你所学的应该能做。
给你贴个56连续的吧,66的你就对着改就行了。代码是调试过的。
另外用默认随机rand调用随机数每次运行都要重置streaminit的值,否则会出现结果相同的情况。

data temp(keep=x);
        call streaminit(133);
        do
                i=1 to 1000;
                x= ceil(rand('UNIFORM')*6);
                output;
        end;
run;
--------------------------------------------------------------
data out56(keep=NumRolls);
        set temp;
        retain count;
        retain NumRolls(0);

        if count =2
                then NumRolls =0;  

        if x=5
                then count=1;
        else if (x=6 and count=1)
                then count=count+1;
        else count=0;

           NumRolls=NumRolls+1;

        if count=2;
        output;

run;
-------------------------------------------------------------       
proc print data=out56;
run;
作者: shiyiming    时间: 2008-9-28 13:09
标题: Re: 求助:一个SAS作业不会做,求各位帮帮忙
[code:3tj60ltl]data dice;
drop i; call streaminit(86);
do i =1 to 10000; x = ceil(rand('UNIFORM')*6);
output;
end;
run;

data aa;
     set dice;
         if x in (5,6) then fig=1;
         else fig=0;
         fig=lag(fig);
run;

data aa;
     set aa;
         retain sign 0;
         if x=6 and fig=1 then sign=_n_;
         sign1=lag(sign);
run;

data bb;
     set aa;
         by sign;
         if first.sign then num=sign-sign1;
run;


[/code:3tj60ltl]




欢迎光临 SAS中文论坛 (https://mysas.net/forum/) Powered by Discuz! X3.2