Как мы можем выполнить условную итерацию в наборе данных sas
-
05-09-2019 - |
Вопрос
Как мы можем выполнить итерацию в наборе данных sas?Например, я выбрал первое.переменной.И хотите найти возникновение определенного условия и установить значение, когда оно удовлетворяет
Решение
SAS data step имеет встроенный цикл поверх наблюдений.Вам не нужно ничего делать, если вы по какой-то причине этого не хотите.Например, следующее генерирует случайное число для каждого наблюдения:
data one;
set sashelp.class;
rannum = ranuni(0);
run;
Если вы хотите перебирать переменные в цикле, то существуют массивы.Например, следующее инициализирует переменные от var1 до var10 случайными числами:
data one;
array vars[1:10] var1-var10;
do i = 1 to 10;
vars[i] = ranuni(0);
end;
run;
Первый.и последнее.флаги автоматически генерируются, когда вы задаете (отсортированные) данные с помощью инструкции by.Пример:
proc sort data=sashelp.class out=class;
by age;
run;
data one;
set class;
by age;
first = first.age;
last = last.age;
run;
/* check */
proc print data=one;
run;
/* on lst
Obs Name Age first last
1 Joyce 11 1 0
2 Thomas 11 0 1
3 James 12 1 0
4 Jane 12 0 0
5 John 12 0 0
6 Louise 12 0 0
7 Robert 12 0 1
8 Alice 13 1 0
...
18 William 15 0 1
19 Philip 16 1 1
*/
Не связан с StackOverflow