Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/css/32.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
SAS-为数据集采样创建计数器变量_Sas_Counter_Sampling - Fatal编程技术网

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

SAS-为数据集采样创建计数器变量,sas,counter,sampling,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 ; dat

我是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;

您只需要替换sumprem=0以保留语句,而且prem_i未识别,请改用prem变量

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

您只需要替换sumprem=0以保留语句,而且prem_i未识别,请改用prem变量

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

因为您使用的是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;

因为您使用的是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;

如果你没有注意到,@Tom将算术赋值改为SUM语句。语法为
+
,并导致变量的默认(或隐式)保留和0初始化。此外,由于数据步骤只迭代一次,因此不需要隐式保留。这比必须键入两次目标变量名更简单。请注意,使用sum语句(或sum()函数)将允许缺少PREM值的采样记录。如果您没有注意到,@Tom将算术赋值更改为sum语句。语法为
+
,并导致变量的默认(或隐式)保留和0初始化。此外,由于数据步骤只迭代一次,因此不需要隐式保留。这比必须键入两次目标变量名更简单。请注意,使用sum语句(或sum()函数)将允许缺少PREM值的采样记录。由于您是新手,
Proc SURVEYSELECT
是一个功能强大的采样过程。另外,请参见数据步骤中的选择n采样,因为您是新手,
Proc SURVEYSELECT
是一个功能强大的采样过程。另外,请参阅以了解数据步骤中的选择n采样