SAS-为数据集采样创建计数器变量

时间:2018-11-28 16:22:12

标签: sas counter sampling

我是SAS的新手,想知道如何随机采样数据集。

我创建一个数据集work.seg,然后从该表中采样。我想继续采样,直到重新采样表中的prem列的总和大于某个数量为止。

在我当前的代码版本中,我认为它每次都会将sumprem重置为0,因此它永远不会超过阈值,并且代码会一直运行。

data work.seg;
    input segment $3. prem loss;
    datalines;
AAA 5000 0
AAA 3000 12584
AAA 250 245
AAA 500 678
;

data work.test;
    sumprem = 0;
    row_i=int(ranuni(777)*n)+1;
    set work.seg point=row_i nobs=n;
    sumprem=sumprem+prem_i;
    if sumprem>15000 then stop;
run;

2 个答案:

答案 0 :(得分:2)

您只需要替换sumprem = 0即可保留语句,并且还无法识别prem_i,请改用prem变量

 sumprem=0; /* Change this to next statement*/
 retain sumprem 0; 

答案 1 :(得分:2)

由于使用的是POINT =选项,因此无需进行数据步骤的常规迭代。只需添加一个循环和一个输出语句。您可能还希望对最大样本数设置上限。

data work.test;
  do _n_=1 to 100000 until (sumprem>15000) ;
    row_i=int(ranuni(777)*n)+1;
    set work.seg point=row_i nobs=n;
    sumprem + prem_i;
    output;
  end;
  stop;
run;