如何在SAS序列中查找缺失的数字

如何在SAS序列中查找缺失的数字,sas,Sas,在SAS中,如何在每个“ID”的“Number”列中找到丢失的数字 例如,ID 1003的最大值为6,显然缺少数字5。我有大约4000行要查看,所以手动执行此操作不会发生 非常感谢您的帮助!我被难住了 身份证号码 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 100

在SAS中,如何在每个“ID”的“Number”列中找到丢失的数字

例如,ID 1003的最大值为6,显然缺少数字5。我有大约4000行要查看,所以手动执行此操作不会发生

非常感谢您的帮助!我被难住了

身份证号码
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

在使用数据线输入您在问题中提供的数据后,我运行了以下代码

首先按ID转换数据:

proc sort data=mydata; by id; run;
proc transpose data =mydata  out=transposed  prefix=number_;
by ID;
var number;
id number;
run;
下一步只是对变量名重新排序,retain语句在此步骤中不做任何其他操作

data transposed_and_ordered;
retain id _name_ number_1 number_2 number_3 number_4 number_5 number_6;
set transposed;
run;
上述两个步骤(以及数据线输入步骤)产生了以下数据集转置_和_顺序:

-------------------------------------------------------------------------------
|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          |           |          |

在不为您编写代码的情况下,下面是一个方法的概要

  • 按ID(升序)和数字(降序)对数据排序
  • 每个ID获取第一条记录(给出最大编号)
  • 从最大值迭代到1,每次迭代输出
  • 按ID和编号重新排序(升序)

  • 请包括代码,包括您迄今为止为解决此问题所做的尝试。直接要求代码是离题的。