【问题标题】:How to Use sas macro to sampling multiple datasets如何使用 sas 宏对多个数据集进行采样
【发布时间】:2014-08-21 03:52:14
【问题描述】:

我有几个具有相同结构的数据集(两个变量:“代码”和“组”),而数据集名称不同(没有规则)。 现在我必须在这些数据集中进行简单的随机抽样,方法是从每个“组”中随机选择一个观察值。 我知道如何编写基本程序:

data sample; 
set original;
where group=‘group_value’;
run;
proc surveyselect data=sample method=srs n=1 seed=821 out=fsample; 
run;

我想更有效地处理这些数据集,但我对 sas 宏知之甚少,任何人都可以给我一些关于使用 sas 宏来做到这一点的建议吗?

【问题讨论】:

    标签: sas sampling sas-macro


    【解决方案1】:

    通常您不需要大的宏循环,使用带有 BY 语句的 PROC 会更有效。建议:

    proc surveyselect data=original method=srs ... ;
      by group ;
    run ;
    

    (如果未排序,则先按组排序)

    【讨论】:

    • 谢谢,我只是把事情弄复杂了。我还没有意识到我可以在 proc surverselect 中使用 by 语句
    【解决方案2】:

    使用 PROC SURVEYSELECT 更好的是 STRATA 选项。

    data have;
     do group = 1 to 5;
      do x = 1 to 5;
        output;
      end;
     end;
    run;
    
    proc surveyselect data=have n=1 out=want;
     strata group;
    run;
    

    STRATA 将作为n 项目的样本,每个strata 变量的唯一值。 (也适用于百分比。)还需要排序(因为它或多或少类似于by)。

    【讨论】:

    • 感谢您的回答。我已经多次阅读了 sas 的 procsurveyselect 文档,并将“n”误认为是总样本量,而不是每个级别的样本量。真可惜。
    猜你喜欢
    • 2015-01-31
    • 2017-03-03
    • 1970-01-01
    • 1970-01-01
    • 2018-07-09
    • 2015-08-19
    • 2018-10-29
    • 1970-01-01
    • 2023-03-08
    相关资源
    最近更新 更多