2014-08-21 3 views
1

У меня есть несколько наборов данных с одинаковой структурой (две переменные: «код» и «группа»), в то время как разные в имени набора данных (без правила). Теперь я должен сделать простую случайную выборку в этих наборах данных, метод selcet одно наблюдение от каждой «группы» случайным образом. Я знаю, как написать основную программу:Как использовать макрос sas для выборки нескольких наборов данных

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

Я хочу, чтобы более эффективно обрабатывать эти наборы данных, но я немного о с.а.се макро знаю, кто может дать мне несколько советов по использованию Sas макрокоманды, чтобы сделать это?

ответ

0

Еще лучше с 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).

+0

Спасибо за ответ. Я читал sas документы proc surveyselect несколько раз и ошибаюсь «n» для общего размера выборки вместо размера выборки каждого уровня. Какой позор. –

2

Обычно вам не нужен большой цикл макросов, использование PROC с оператором BY намного эффективнее. Предлагайте:

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

(сортировать по группе первым, если несортированным)

+0

спасибо, я просто усложнил ситуацию. Я не понял, что могу использовать по заявлению в proc surverselect –

Смежные вопросы