Я импортирую таблицу из базы данных Access в SAS, где столбец последовательности был поврежден. Мне нужно создать новый столбец последовательности в SAS. Я не хочу заново создавать порядковый номер в Access, поскольку исходные таблицы пополняются по регулярному расписанию. Есть ли что-то вроде столбца автонумерации, который можно добавить в SAS?
Вы можете сделать что-то вроде этого:
data want;
set have;
autonumber+1;
run;
Существует также _N_
- это количество итераций цикла шага данных, которое в обычном шаге данных равно номеру строки. Он не записывается в набор данных, но к нему всегда можно получить доступ как к обычной переменной.
Классический пример того, что _N_
не совпадает с номером наблюдения - цикл DoW, используемый для добавления суммы переменной к каждой строке для каждого значения переменной класса. Обратите внимание, что _N_
возвращает не номер строки, а номер итерации - в данном случае цикл data step выполняет итерацию один раз для каждого значения x
, а не один раз для каждой строки, поскольку строки втягиваются через цикл do...until.
data have;
do x = 1 to 5;
do y = 1 to 3;
z=floor(7*ranuni(7));
rownum+1;
output;
end;
end;
run;
data test;
do t=1 by 1 until (last.x);
set have;
by x;
sum_z+z;
end;
do t=1 by 1 until (last.x);
set have;
by x;
output;
put x= z= sum_z= _N_= rownum=;
end;
sum_z=0;
run;
Журнал:
x=1 z=2 sum_z=12 _N_=1 rownum=1
x=1 z=5 sum_z=12 _N_=1 rownum=2
x=1 z=5 sum_z=12 _N_=1 rownum=3
x=2 z=5 sum_z=13 _N_=2 rownum=4
x=2 z=3 sum_z=13 _N_=2 rownum=5
x=2 z=5 sum_z=13 _N_=2 rownum=6
x=3 z=5 sum_z=12 _N_=3 rownum=7
x=3 z=5 sum_z=12 _N_=3 rownum=8
x=3 z=2 sum_z=12 _N_=3 rownum=9
x=4 z=3 sum_z=12 _N_=4 rownum=10
x=4 z=5 sum_z=12 _N_=4 rownum=11
x=4 z=4 sum_z=12 _N_=4 rownum=12
x=5 z=6 sum_z=13 _N_=5 rownum=13
x=5 z=3 sum_z=13 _N_=5 rownum=14
x=5 z=4 sum_z=13 _N_=5 rownum=15