SAS中文论坛

标题: 再求求问大神用sas抽样进行抽奖的问题。 [打印本页]

作者: shiyiming    时间: 2010-4-10 09:43
标题: 再求求问大神用sas抽样进行抽奖的问题。
我有一个数据集  2个变量.其中name是人名, times是抽奖机会。
times=N,则name有N次抽奖机会。
数据集一共有10万多行,其中抽奖机会最多的是个人有200多次。
我要做的是:
一等奖抽出3人,二等奖10人  三等奖100人。要求不重复。
我用的是proc surveyslect,但总是有重复的现象。不仅是有人同时中一二三等奖
还有时候在同一奖项中中多次。
这个问题怎么解决呢?
name      times
A               1
B               3
B               3
B               3
C              5
C              5
.......
作者: shiyiming    时间: 2010-4-11 00:32
标题: Re: 再求求问大神用sas抽样进行抽奖的问题。
[code:2pp0x25s]DATA A;
        DO I = 1 TO 1E5;
                Name = PUT(ROUND(RANUNI(1)*1E5, 1E1), Z6.);
                Times = CEIL(RANUNI(1)*10);
                OUTPUT;
        END;
RUN;

%MACRO JPmcr;
        PROC SQL;
                CREATE TABLE AA AS SELECT DISTINCT Name, SUM(Times) AS totTimes FROM A GROUP BY Name;
        QUIT;
        %DO ORDER = 1 %TO 3;
                %LET N1 = 3; %LET N2= 10; %LET N3 = 100;
                PROC SURVEYSELECT DATA =AA OUT = B&ORDER.(KEEP = Name totTimes) METHOD = PPS N = &&N&ORDER. SEED = &ORDER.;
                        SIZE totTimes;
                RUN;
                PROC SQL;
                        CREATE TABLE AA AS SELECT AA.*  FROM AA WHERE AA.Name NOT IN (SELECT B.Name FROM B&ORDER. AS B);
                QUIT;
        %END;
%MEND JPmcr;

%JPmcr
;[/code:2pp0x25s]
分选三次。次数多的机会更大。但我想有可能只选一次即可(?)。
作者: shiyiming    时间: 2010-4-11 14:08
标题: Re: 再求求问大神用sas抽样进行抽奖的问题。
正在学习中;

分选三次,是为了中了一等奖,就不能重二三等奖了。

我学习学习,哎 有2年没有SAS了,很多都忘了。

谢谢你了。
作者: shiyiming    时间: 2010-4-12 17:17
标题: Re: 再求求问大神用sas抽样进行抽奖的问题。
你的name里都有很多重复的,抽出重复的不是很正常?
作者: shiyiming    时间: 2010-4-20 09:55
标题: Re: 再求求问大神用sas抽样进行抽奖的问题。


就是为了不重复抽出的。


一个人不能获得2次以上的奖啊。
作者: shiyiming    时间: 2010-4-20 10:20
标题: Re: 再求求问大神用sas抽样进行抽奖的问题。
可以用不放还的抽样。




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