2015-01-21 6 views
-1

В SAS, как я могу найти недостающие числа в моем номере «Number» для каждого «ID»?Как найти недостающие номера в последовательности SAS

Например, ID 1003 имеет максимум 6 и явно отсутствует Номер 5. У меня есть около 4000 строк, чтобы смотреть так, чтобы это вручную не происходило.

Любая помощь очень ценится! Я в тупике.

ID Number 1002 2 1002 1 1003 6 1003 4 1003 3 1003 2 1003 1 1005 4 1005 3 1005 2 1005 1 1007 1 1009 3 1009 2 1009 1

+1

Пожалуйста, включите код, включая то, что вы пытались до сих пор решить эту проблему. Непосредственный запрос кода не соответствует теме. – Joe

ответ

-1

Я побежал следующий код после использования линий передачи данных для ввода данных, которые были указаны в вашем вопросе.

Первый транспонировать данные по ID:

proc sort data=mydata; by id; run; 
proc transpose data =mydata out=transposed prefix=number_; 
by ID; 
var number; 
id number; 
run; 

Следующий шаг только переупорядочиваем имена переменных, то сохранить заявление ничего другого на этом этапе не делать.

data transposed_and_ordered; 
retain id _name_ number_1 number_2 number_3 number_4 number_5 number_6; 
set transposed; 
run; 

Два шага выше (наряду с шагом ввода линий передачи данных) дают следующий набор данные transposed_and_ordered:

------------------------------------------------------------------------------- 
|ID | NAME | number_1 | number_2 | number_3 | number_4 | number_6 | 
------------------------------------------------------------------------------- 
|1002 | number | 1  | 2   |   |   |   | 
------------------------------------------------------------------------------- 
|1003 | number | 1  | 2   |3   |4   |6   | 
------------------------------------------------------------------------------- 
|1005 | number | 1  | 2   |3   |4   |   | 
------------------------------------------------------------------------------- 
|1007 | number | 1  |   |   |   |   | 
------------------------------------------------------------------------------- 
|1009 | number | 1  | 2   |3   |   |   | 
0

Без написания кода для вас, вот набросок одного метода ...

  1. Отсортируйте данные по ID (по возрастанию) и номер (по убыванию)
  2. Возьмите первую запись на ID (давая максимальное число)
  3. Итерация от этого максимальное число до 1, выход каждой итерации
  4. Re-сортировать по ID и номер (по возрастанию)
Смежные вопросы