标题: 再求求问大神用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;