Какие 5 аксов вы хотите для каждой марки?Первые 5?Последние 5?Какая-то случайная выборка?
Если последняя, то proc surveyselect
- это путь:
proc sort data = sashelp.cars out = cars;
by make;
run;
proc surveyselect
data = cars
out = mysample
method = URS
n = 5
selectall;
strata make;
run;
Установка method = URS
запрашивает неограниченную случайную выборку с заменой.Поскольку это позволяет выбирать одну и ту же строку несколько раз, нам гарантировано 5 строк на марку в выборке, даже если во входном наборе данных <5.Если вы просто хотите взять все доступные строки в этом сценарии, вы можете использовать <code>method = srs, чтобы запросить простую случайную выборку.
Если вы хотите получить первые 5 на марку, затем выполните сортировку, как раньше, затем выполните шаг данных:
data mysample;
set cars;
by make;
if first.make then rowcount = 0;
rowcount + 1;
if rowcount <= 5;
run;
Получение последних 5 строк на марку очень похоже - если у вас есть ключевой столбец, который можно использовать для изменения порядка в каждой марке, это самый простой вариант.